NSXMLParser在iOS5中工作正常,但在iOS6中不工作
在我的iOS应用程序中,我尝试使用NSXMLParser解析下面的xml。我可以在iOS5中成功解析这个xml,但在iOS6中解析器没有进入parserdidStartElement。在iOS6 parserDidStartDocument被成功调用,但没有进入任何其他解析器委托方法..是否有任何问题与XML格式?我怎样才能解决这个问题..NSXMLParser在iOS5中工作正常,但在iOS6中不工作
<RESULTS>
<ROW>
<COLUMN NAME="NAME">Test1</COLUMN>
<COLUMN NAME="ANAME">testing xml1</COLUMN>
<COLUMN NAME="PHONE">4470111</COLUMN>
<COLUMN NAME="REMARKS"/>
<COLUMN NAME="XCOORD_DMS">227901.58873387</COLUMN>
<COLUMN NAME="YCOORD_DMS">391872.68493206</COLUMN>
<COLUMN NAME="XCOORD_WGS">51.49367618</COLUMN>
<COLUMN NAME="YCOORD_WGS">25.27912682</COLUMN>
</ROW>
<ROW>
<COLUMN NAME="NAME">Test2</COLUMN>
<COLUMN NAME="ANAME">testing xml2</COLUMN>
<COLUMN NAME="PHONE">4258444</COLUMN>
<COLUMN NAME="REMARKS"/>
<COLUMN NAME="XCOORD_DMS">229608.71442946</COLUMN>
<COLUMN NAME="YCOORD_DMS">386848.18818915</COLUMN>
<COLUMN NAME="XCOORD_WGS">51.51051535</COLUMN>
<COLUMN NAME="YCOORD_WGS">25.23373805</COLUMN>
</ROW>
</RESULTS>
这是代码..
- (void) initView:(JsonObject *) pageMenu{
appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSURL* url = [NSURL URLWithString:@"http://www.test.in/test.xml"];
NSXMLParser* parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
[parser setDelegate:self];
[parser parse];
[parser release];
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
attributes:(NSDictionary *)attributeDict{
NSLog (@"I have started");
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName{
NSLog (@"I have started");
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
NSLog (@"I have started");
}
-(void) parserDidStartDocument:(NSXMLParser *)parser {
NSLog (@"I have started");
}
-(void) parserDidEndDocument: (NSXMLParser *)parser {
NSLog (@"I have started");
}
我发现了什么是XML的问题......在创建它应该被保存为XML的UTF-8没有BOM ..这是问题所在。经过这样做的问题是固定的
大写或小写不应有任何区别。问题一定在其他地方 –
Phillipe ..是的你是正确的..我编辑了答案..谢谢你的帮助 – Pras
试试这个方法(的委托方法的一部分)
- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError
{
NSLog(@"Error = %@", parseError);
}
我在iOS 6,但不能在iOS 5中得到一个错误,却得到了与,它的错误信息说解析有问题。 (Error Domain = NSXMLParserErrorDomain Code = 9“The operation could not be completed。(NSXMLParserErrorDomain error 9.)”)。
可以BTW查看这里的错误代码:http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSXMLParser_Class/Reference/Reference.html
我还在试图找出我自己的问题,但此行可以帮助您在正确的方向。
希望你解决它!
我找到了解决我自己的问题 - 如果你可能得到相同的。我将我的XML标题更改为编码UTF-8而不是ISO-8859-1,并且还使用UTF-8编码保存了XML文件本身。使用UTF-8编码保存XML文件非常重要,而不是只更改XML文件中的标题。 希望它可以帮助别人! – Lasse
你能显示一些代码吗? –
Phillipe ..我已经为你粘贴了一些代码..如果我使用其他简单的xmls它会进入所有的解析器代表..问题只是与xml形式..但不知道如何在iOS6中完美工作 – Pras