2012-09-30 69 views
0

在我的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"); 
} 
+0

你能显示一些代码吗? –

+0

Phillipe ..我已经为你粘贴了一些代码..如果我使用其他简单的xmls它会进入所有的解析器代表..问题只是与xml形式..但不知道如何在iOS6中完美工作 – Pras

回答

1

我发现了什么是XML的问题......在创建它应该被保存为XML的UTF-8没有BOM ..这是问题所在。经过这样做的问题是固定的

+0

大写或小写不应有任何区别。问题一定在其他地方 –

+0

Phillipe ..是的你是正确的..我编辑了答案..谢谢你的帮助 – Pras

0

试试这个方法(的委托方法的一部分)

- (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

我还在试图找出我自己的问题,但此行可以帮助您在正确的方向。

希望你解决它!

+0

我找到了解决我自己的问题 - 如果你可能得到相同的。我将我的XML标题更改为编码UTF-8而不是ISO-8859-1,并且还使用UTF-8编码保存了XML文件本身。使用UTF-8编码保存XML文件非常重要,而不是只更改XML文件中的标题。 希望它可以帮助别人! – Lasse

相关问题