用于编辑大型XML文件的QueryPath或DOMDocument?

时间:2012-05-16 13:06:30

标签: php xml openxml domdocument querypath

我正在尝试使用PHP编辑一个大型XML文件(从Excel .xlsm文件中提取),我想知道哪个是最好的(关于性能):QueryPath或PHP的DOMDocument?

文件重量至少为8 MB,包含大约400k行(格式化时)。

感谢您的反馈

1 个答案:

答案 0 :(得分:2)

QueryPath基本上只是DOMDocument的包装器。它为裸DOMDocument对象增加了相对较少的开销。对于访问和编写操作(例如attr()append()等),应该没有值得注意的性能差异。

但接下来是大问题:找东西。

传统上,遍历DOMDocument是通过“走树”或使用DOMNode->getElementsByTagname()来完成的。如果您愿意编写代码,这会预先形成。

使用QueryPath 2.x进行查询对于大小合适的文档来说会很慢,除非您使用非常具体的选择器(例如':root> foo> bar> baz')。

但是,查询大型对象时,即将进入Alpha1的QueryPath 3.x要快很多倍。执行qp('foo')和XPath一样快......这让我想到了最后一个选项。

然后还有内置的XPath处理器,它还附带了PHP的libxml支持。如果您正在执行大型XML文档,这可能会为您提供更好的性能,因为它以C速度而不是PHP速度执行。但是你必须编写XPath表达式,这是(恕我直言)有点痛苦。

所以底线:

  • 基础知识:任何一方都可以。
  • 修改:任何一方都可以。
  • 很多遍历:
    • DOMDocument将让您手动遍历。
    • QueryPath 2.x很慢
    • QueryPath 3.x更快
    • XPath最快......但它是XPath