解析空节点时,iPhone应用程序崩溃

时间:2012-07-02 09:41:03

标签: objective-c ios ios5 ios4

我正在尝试解析xml,如果xml Feed中有空节点,应用程序崩溃了。 可能是什么原因?

修改 我的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 Parser。

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

}

2 个答案:

答案 0 :(得分: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);
    }

}

答案 1 :(得分:0)

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