有没有一种使用XMLReader跳转到元素的快速方法?

时间:2010-04-15 00:25:07

标签: php performance large-files xmlreader

我正在使用XMLReader读取一个大型XML文件,其中包含大约100万个元素。但是,我已经计算过,当我使用XMLReader::next ([ string $localname ] )XMLReader::read ( void )

跳转到-for-element-element 500.000时,将花费超过10秒的时间

这不太实用。有更快的方法吗?

2 个答案:

答案 0 :(得分:1)

没有一种快速的方法可以做到这一点。对于随机访问,XML本质上很慢,并且无法绕过它。

正确的做法是考虑您的算法并确定您为什么要处理这样的数据。从一个元素到下一个孩子或兄弟元素是便宜和快速的。只要您的算法只需要遍历XML文件一次,就不会产生太多开销。但是,听起来您可能正试图在结构中的任意位置无序访问元素。无论你试图使用什么读者,糖蜜都会变慢。

答案 1 :(得分:0)

你允许修改数据库吗?如果可以,我会添加一个标签,然后使用ReadToFollowing跳转到这一点。