我正试图使用TBXML
解析XML文件。但是,这个解析器没有内置错误检查,所以如果一个元素不存在,它会崩溃。下面是我如何解析我的一个XML文件:更好的方法来检查是否有零?
TBXML *XML = [[TBXML tbxmlWithXMLData:myxmlfile] retain];
if (XML.rootXMLElement) {
TBXMLElement *XMLRoot = XML.rootXMLElement;
if ([TBXML childElementNamed:@"blah" parentElement:XMLRoot]) {
TBXMLElement *Blah = [TBXML childElementNamed:@"blah" parentElement:XMLRoot];
if ([TBXML childElementNamed:@"stuff" parentElement:Blah]) {
TBXMLElement *Item = [TBXML childElementNamed:@"item" parentElement:Blah;
if ([TBXML childElementNamed:@"stuff:blah" parentElement:Item]) {
TBXMLElement *something = [TBXML childElementNamed:@"stuff:blah" parentElement:Item];
NSString *Something = [TBXML textForElement:something];
//do something here...
}
else {
[self showFetchError];
[XML release];
return;}
} else {
[self showFetchError];
[XML release];
return;}
} else {
[self showFetchError];
[XML release];
return;}
} else {
[self showFetchError];
[XML release];
return;
}
正如您所看到的,它会为每个项目调用两次。这对我来说似乎是一个巨大的浪费。任何方式我都可以对每件物品进行相同的验证,而无需做我现在正在做的事情?
嗯,这看起来更好,但它仍然没有解决双重通话的问题解析元素。 –
我已经用另一个可能的解决方案更新了我的答案。 – Eimantas
自从使用此解决方案之后,做了很多更新。现在它甚至应该编译! – Eimantas