【问题标题】:using TBXML and parse an attribute that there isn't all the time使用 TBXML 并解析一个并非一直存在的属性
【发布时间】:2011-07-16 18:31:03
【问题描述】:

我正在使用 TBXML 解析一个 xml 文件。 我的xml是这样的:

<locations>
   <location>
      <id>1</id>
      <name>hello</name>
   </location>
   <location>
      ...
</locations>

一切正常,但有一个大问题:有时xml可以“跳过”“名称”标签,所以,例如,有这样的事情:

...
</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;
}

应用程序在读取标签“名称”时崩溃,因为有时没有...

我该如何解决?

谢谢!

【问题讨论】:

  • 当您说“应用程序崩溃”时,您需要从控制台发布崩溃日志(如果有)。这将有助于我们回答您的问题。

标签: iphone xml xml-parsing


【解决方案1】:

应用程序可能崩溃了,因为您的 ... //do something 假设 name 是非零。如果在 XML 中找不到 &lt;name&gt; 元素,则代码中的 name 变量最终会为零。

您在“做某事”注释中剪掉的代码是什么?

顺便说一句,我通过谷歌搜索“tbxml 检查子节点是否存在”并找到以下页面找到了此信息:

http://www.tbxml.co.uk/forum/viewtopic.php?f=4&t=12

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    • 2012-06-20
    • 2012-10-28
    • 1970-01-01
    • 2013-07-08
    • 2020-01-18
    • 2018-02-14
    相关资源
    最近更新 更多