php – XMLReader是SAX解析器,DOM解析器,还是两者都不是?

我正在测试各种方法来读取(可能很大,非常频繁的读取)PHP配置文件.不需要写作.我有两个成功的实现,一个使用SimpleXML(我知道是一个DOM解析器)和一个使用XMLReader.

我知道DOM读取器必须读取整个树,因此使用更多内存.我的测试反映了这一点我也知道SAX解析器是一个“基于事件”的解析器,它使用较少的内存,因为它从流中读取每个节点而不检查接下来的内容.

XMLReader还使用游标从流中读取,提供有关其当前所在节点的数据.所以,听起来像XMLReader(http://us2.php.net/xmlreader)并不是一个DOM解析器,但我的问题是,它是SAX解析器还是别的?看起来XMLReader的行为与SAX解析器的行为方式相似,但不会自行抛出事件(换句话说,您可以使用XMLReader构建SAX解析器吗?)

如果它是别的,那么它的分类是否有名字?

解决方法:

XMLReader calls itself a “pull parser.”

The XMLReader extension is an XML Pull parser. The reader acts as a cursor going forward on the document stream and stopping at each node on the way.

它后来继续说它使用libxml.

This page on Java XML Pull Parsing可能有一些可能的兴趣.如果XMLReader与此项目的目标和意图相关,那么您的问题的答案完全属于“不”类别.

上一篇:php-每个父节点的子节点数量不同的XML


下一篇:php – 如何将XMLReader / DOMDocument与大型XML文件一起使用并防止500错误