【问题标题】:SimpleXML or XMLReader? [duplicate]SimpleXML 或 XMLReader? [复制]
【发布时间】:2010-09-22 12:26:16
【问题描述】:

两者中哪一个更普及?我想从http://freshmeat.net/projects-xml/mysql/mysql.xml?branch_id=46519 读出版本号,但我想使用更多人拥有的版本号。

如果你知道另一种从 mysql 获取最新稳定版本号的方法,请告诉我 ;)

【问题讨论】:

    标签: php xml


    【解决方案1】:

    SimpleXML 是在 PHP5 中引入的,而 XmlReader 仅默认包含在 5.1 版本中,因此前者可能是最好的选择:

    $struct = simplexml_load_string($xml);
    $version = (string)$struct->project->latest_release->latest_release_version;
    

    但是,如果您不进行任何其他 XML 处理并希望最大限度地提高兼容性,您可以对 XML 进行正则表达式:

    if(preg_match('/<latest_release_version>(.*?)<\\/latest_release_version>/', $xml, $matches)){
    $version = $matches[1];
    }
    

    它比正确处理 XML 更麻烦,但可能更快,并且几乎所有 PHP 安装都支持。

    【讨论】:

      【解决方案2】:

      对于大文件使用 XMLreader,simpleXML 将消耗大文件上的所有内存。

      【讨论】:

        【解决方案3】:

        它必须是 SimpleXML。它is enabled by default,比 Dom 方法更快地加载 XML 文档,比 Dom 方法具有更小的内存占用,并且比 Dom 方法具有更简单的xpath methods

        $xml = simplexml_load_file(
            'http://freshmeat.net/projects-xml/mysql/mysql.xml?branch_id=46519'
            );
        $result = $xml->xpath('//latest_release/latest_release_version'); 
        // or '//latest_release/*' if you'd rather loop through all release information.
        
        while(list( , $node) = each($result))
            echo $node, "\n";
        

        【讨论】:

          【解决方案4】:

          对于此类任务,将文档读入DomDocument 并使用DomXPath 可能更合适。

          为了回答您的问题,这两个库(以及 DomDocument + DomXPath)都是 PHP5 的标准配置,因此它们同样是不错的选择。

          【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-04-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多