0

我正在尝试解析 xml,如果 xml 提要中有一个空节点,应用程序就会崩溃。这可能是什么原因?

编辑 我的 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];
}

}

4

2 回答 2

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);
    }

}
于 2012-07-02T09:51:36.823 回答
0

不看你的代码,我只能给你一个一般性的答案——听起来你的代码在“parser:foundCharacters:”方法中“期望”一个值。检查你的代码,看看当找到的字符实际上是 nil 时会发生什么。使用 try-catch 块并处理所有可能的情况,这样您的代码就不会因为您还没有想到的其他事情而导致崩溃。

于 2012-07-02T09:50:34.717 回答