我在使用带有iphone sdk的XML解析器时遇到了一些性能问题。我试图直接使用LibXML解析器和NSXMLParser,但我有相同的结果。 现在我正在寻找可以提高解析性能的东西。 将属性移动到嵌套元素可以使它更快?
我有一个像这样的XML源文件:
<Events> <Event Name="Test1" Description="Desc" Cat="Cate" Date="20/01/2010" ImageURL="" /> </Events>
我是否必须创建嵌套树?如叶子?它会改善性能吗?
<Events> <Event> <Name>Test1</Name> <Description>A description</Description> <Date>20/01/2010</Date> <ImageURL>http://remoteurl.../foo.png</ImageURL> </Event> </Events>
很多, 保罗
答案 0 :(得分: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>
当您点击人物标签时,我们假设您要创建一个人物对象。因此,您创建该person对象,然后让它解析person标签内的xml。您可以通过使person对象成为对象的新委托来完成此操作。当person对象发现关闭人员标签时,它可以重置委托。我也继续在原始代表上重新调用相同的方法。我从here得到了这个想法。您也可以关注并对车辆标签执行相同的操作。我相信你现在可以理解我在开车了。
我认为这可以提高效率的原因在于,不是创建一堆元素,而是踩回堆栈(就像当你看到一个人检查你是否在文档中那样)。我想你可以假设当你看到一个人标记你的人,但如果你想要在安全的一面检查是重要的。这种方式也更加模块化。我认为,由于减少字符串比较,性能会提高。代码也更优雅。
如果这不是你要找的答案,你可以提供一些细节。谢谢,快乐的编码。