iPhone SDK XML解析属性VS嵌套元素

时间:2010-02-01 09:38:37

标签: iphone performance parsing nsxmlparser libxml2

我在使用带有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>

很多, 保罗

1 个答案:

答案 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得到了这个想法。您也可以关注并对车辆标签执行相同的操作。我相信你现在可以理解我在开车了。

我认为这可以提高效率的原因在于,不是创建一堆元素,而是踩回堆栈(就像当你看到一个人检查你是否在文档中那样)。我想你可以假设当你看到一个人标记你的人,但如果你想要在安全的一面检查是重要的。这种方式也更加模块化。我认为,由于减少字符串比较,性能会提高。代码也更优雅。

如果这不是你要找的答案,你可以提供一些细节。谢谢,快乐的编码。