【发布时间】:2011-03-04 04:03:57
【问题描述】:
我正在测试各种方法来读取 PHP 中的 XML 配置文件(可能很大,读取非常频繁)。从来不需要写作。我有两个成功的实现,一个使用 SimpleXML(我知道这是一个 DOM 解析器),一个使用 XMLReader。
我知道 DOM 读取器必须读取整个树,因此会占用更多内存。我的测试反映了这一点。我也知道 SAX 解析器是一个“基于事件”的解析器,它使用较少的内存,因为它从流中读取每个节点而不检查下一个节点。
XMLReader 还从带有光标的流中读取,提供有关它当前所在节点的数据。因此,听起来 XMLReader (http://us2.php.net/xmlreader) 绝对不是 DOM 解析器,但我的问题是,它是 SAX 解析器还是其他什么?看起来 XMLReader 的行为方式与 SAX 解析器的行为方式相同,但不会自己抛出事件(换句话说,您可以使用 XMLReader 构造 SAX 解析器吗?)
如果是别的东西,它所在的分类有名字吗?
【问题讨论】:
-
另见this question,答案有基准链接
-
参见this other related question,关于使用 LibXML2 实现,以及使用 SAX 接口 而不是 Expat 接口...以及关于现在的术语问题(这里比较混乱,那里更好)。
标签: php xml parsing sax xmlreader