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


QueryPath or DOMDocument for editing large XML files?

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

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

感谢您的反馈

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将使您手动遍历。
    • 查询路径 2.x 很慢
    • QueryPath 3.x 要快得多
    • XPath 是最快的...但它是XPath