【问题标题】:php xmlReader vs xmlparserphp xmlReader vs xmlparser
【发布时间】:2012-08-21 07:44:39
【问题描述】:

我知道 xmlreader 与其他基于树的解析器(如 simplexml 和 dom)之间的区别。但是 xmlreader 和 xmlparser 有什么区别呢?使用一个比另一个有什么好处吗?

我需要解析比较大的 xml 文件,affiliate datafeeds 大约 100M。

【问题讨论】:

    标签: php xml-parsing simplexml xmlreader


    【解决方案1】:

    他们使用两种不同的软件架构 - 推送与拉取。

    XMLReader 是一个“拉式解析器”。您负责创建一个大循环并调用 read() 函数将光标向前移动。这种软件架构往往更容易直观地理解。

    XMLParser 是一个基于事件的“推送解析器”。您负责注册由 start_element、end_element、character_data、start_namespace_decl 等事件触发的回调函数。当您调用 xml_parse() 时,Expat 库将使用您的回调函数处理整个 XML 文档。

    如果您不了解推送与拉取架构之间的细微差别,那么我建议您从 XMLReader 开始,因为“拉取”更易于理解且更易于可视化。

    【讨论】:

      【解决方案2】:

      不是这方面的专家,但根据 PHP 文档,XMLReader 似乎是要走的路,正如简介所说“阅读器充当文档流上的光标,并在途中的每个节点处停止."。从理论上讲,这应该可以防止内存问题/泄漏,尤其是在较大的文件上。

      http://www.php.net/manual/en/intro.xmlreader.php

      XMLParser 将返回一个数组,这可能会导致较大的 xml 文件出现内存问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-31
        • 1970-01-01
        • 1970-01-01
        • 2011-09-30
        • 1970-01-01
        • 1970-01-01
        • 2011-11-08
        • 1970-01-01
        相关资源
        最近更新 更多