我正在尝试使用 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