2012-07-02 21 views
0

我试图分析一个xml,如果xml提要中有一个空节点,应用程序崩溃。 这可能是什么原因?解析空节点时,iPhone应用程序崩溃

编辑 我的XML看起来像这样

<Sponsors> 
    <Sponsor> 
     <Name>name...</Name> 
     <About>blah...blah...blah</About> 
     <Website>http://test.com</Website> 
     <LogoImage>someImage.jpg</LogoImage> 
     <smallIcon>someImage.jpg</smallIcon> 
     <Area/> 
     <BannerImage/>//->>>this node is empty// 
    </Sponsor> 
</Sponsors> 

我使用的解析器NSXML这样。

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { 
if(nil != self.currentsponsorElement){ 
    [self.currentsponsorElement appendString:string]; 
} 

}

+2

我们需要看到您的XML和用于解析它的代码。你在检查错误吗?什么是错误? –

+0

您使用NSXML解析吗? – Deepesh

+0

@elppa是的,我正在使用NSXML解析 – user1268938

回答

0

不看你的代码,我只能给你一个普遍的答案 - 这听起来像你的代码是“期待”中的一个值“解析器:foundCharacters:”方法。查看你的代码,看看发现的字符实际上是零时会发生什么。使用try-catch块并处理所有可能的场景,这样你的代码就不会因其他你还没有想到的事情而导致崩溃。

1

试试这个: -

内didStartElement使用此代码: -

- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 
{ 

    if ([elementName isEqualToString:@"Sponsor"]) 
    { 
     if(!soapResults) 
     { 
      soapResults = [[NSMutableString alloc] init]; //declared in .h 
     } 
     recordResults = YES; 
    } 
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSMutableString *)string { 

    if (string != nil) { 
     [results setString:@""]; 
     [results appendString: string]; 
     NSLog(@"foundResults: %@",results); 
    } 

} 
+0

@ user1268938,查看我的答案,并解决您的问题 – Deepesh

+0

请参阅我的更新回答 – Deepesh

+0

解析器解析nslog中打印的节点的内容,但在最后崩溃。 – user1268938