我正在使用TBXML解析xml文件。 我的xml是这样的:
<locations>
<location>
<id>1</id>
<name>hello</name>
</location>
<location>
...
</locations>
一切正常,但有一个大问题:有时xml可以“跳过”“name”标签,所以,例如,有这样的东西:
...
</location>
<location>
<id>43</id>
</location>
<location>
...
问题在哪里?
使用此代码
TBXMLElement *location = [TBXML childElementNamed:@"location" parentElement:root];
while (location){
TBXMLElement *id = [TBXML childElementNamed:@"id" parentElement:location];
TBXMLElement *name = [TBXML childElementNamed:@"name" parentElement:location];
... //do something
location = location -> nextSibling;
}
应用程序崩溃,读取标签“name”,因为有时候没有......
我该如何解决?
谢谢!
答案 0 :(得分:0)
该应用可能会崩溃,因为您的... //do something
假设name
为零。如果在XML中找不到<name>
元素,则代码中的name
var最终为零。
您在“做某事”评论中删除的代码是什么?
顺便说一句,我通过谷歌搜索“tbxml检查子节点存在”这样的信息并找到以下页面: