1

我在使用带有 iphone sdk 的 XML 解析器时遇到了一些性能问题。我尝试直接使用 LibXML 解析器和 NSXMLParser,但我得到了相同的结果。现在我正在寻找可以提高解析性能的东西。将属性移动到嵌套元素可以使其更快?

我有一个这样的 XML 源文件:

<事件>
 <Event Name="Test1" Description="Desc" Cat="Cate" Date="20/01/2010" ImageURL="" />

</事件>

我必须创建嵌套树吗?比如下面的?它会提高性能吗?

<事件>
 <事件>
  <名称>测试1</名称>
  <Description>描述</Description>
  <日期>20/01/2010</日期>
  <ImageURL>http://remoteurl.../foo.png</ImageURL>
 </事件>
</事件>

非常感谢,保罗

4

1 回答 1

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 对象成为该对象的新委托。当人员对象发现关闭人员标签时,它可以重置委托。我还继续在原始委托上重新调用了相同的方法。我从这里得到了这个想法。您也可以按照车辆标签执行相同的操作。我相信你能理解我现在的意思。

我认为这可以提高效率的原因是,不是创建一堆元素并退回到堆栈中(比如当你看到有人检查你的文档是否在此之前)。我想你可以假设当你看到一个人标签时,你是一个人,但如果你想安全起见,检查很重要。这种方式也更加模块化。我认为由于字符串比较的减少,性能会有所提高。它的代码也更优雅。

如果这不是您正在寻找的答案,您能否提供一些细节。感谢和快乐的编码。

于 2010-02-09T07:24:38.067 回答