1

我正在使用 XMLReader 读取一个大型 XML 文件,该文件在我正在读取的级别上包含大约 100 万个元素。但是,我计算出当我使用XMLReader::next ([ string $localname ] )或跳转到例如元素 500.000 时将花费 10 秒以上XMLReader::read ( void )

这不是很有用。有没有更快的方法来做到这一点?

4

2 回答 2

1

没有快速的方法可以做到这一点。XML 对于随机访问来说天生就很慢,而且没有办法绕过它。

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

于 2010-04-15T00:52:20.233 回答
0

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

于 2013-02-12T15:41:20.950 回答