【问题标题】:iPhone SDK XML Parsing Attribute VS Nested elementsiPhone SDK XML 解析属性 VS 嵌套元素
【发布时间】:2011-01-11 15:42:14
【问题描述】:
我在使用带有 iphone sdk 的 XML 解析器时遇到了一些性能问题。我尝试直接使用 LibXML 解析器和 NSXMLParser,但我得到了相同的结果。
现在我正在寻找可以提高解析性能的东西。
将属性移动到嵌套元素可以使其更快?
我有一个这样的 XML 源文件:
事件>
我必须创建嵌套树吗?比如下面的?它会提高性能吗?
测试1名称>
描述20/01/2010日期>
http://remoteurl.../foo.png事件>
事件>
非常感谢,
保罗
【问题讨论】:
标签:
iphone
performance
parsing
nsxmlparser
libxml2
【解决方案1】:
我不完全确定你的意思。我可能没有正确理解您,但这是我在程序中所做的。
假设你有一个这样的文件:
<document>
<person>
<name>bob</name>
<phone>555-5555</phone>
<vehicle>
<color>blue</color>
<type>truck</truck>
</vehicle>
</person>
<person>
<name>jan</name>
<phone>444-5555</phone>
<vehicle>
<color>red</color>
<type>car</truck>
</vehicle>
</person>
</document>
当您点击人员标签时,假设您要创建一个人员对象。因此,您创建了该人员对象,并让它解析人员标签内的 xml。为此,您可以使 person 对象成为该对象的新委托。当人员对象发现关闭人员标签时,它可以重置委托。我还继续在原始委托上重新调用了相同的方法。我从here 得到这个想法。您也可以按照车辆标签执行相同的操作。我相信你能理解我现在的意思。
我认为这提高了效率的原因是,与其创建一堆元素并退回到堆栈中(比如当您看到有人检查您的文档是否在此之前)。我想你可以假设当你看到一个人标签时,你是一个人,但如果你想安全起见,检查很重要。这种方式也更加模块化。我认为由于字符串比较的减少性能会有所提高。它的代码也更优雅。
如果这不是您正在寻找的答案,您能否提供一些细节。谢谢,编码愉快。