【发布时间】:2010-09-22 12:26:16
【问题描述】:
两者中哪一个更普及?我想从http://freshmeat.net/projects-xml/mysql/mysql.xml?branch_id=46519 读出版本号,但我想使用更多人拥有的版本号。
如果你知道另一种从 mysql 获取最新稳定版本号的方法,请告诉我 ;)
【问题讨论】:
两者中哪一个更普及?我想从http://freshmeat.net/projects-xml/mysql/mysql.xml?branch_id=46519 读出版本号,但我想使用更多人拥有的版本号。
如果你知道另一种从 mysql 获取最新稳定版本号的方法,请告诉我 ;)
【问题讨论】:
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 安装都支持。
【讨论】:
对于大文件使用 XMLreader,simpleXML 将消耗大文件上的所有内存。
【讨论】:
它必须是 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";
【讨论】:
对于此类任务,将文档读入DomDocument 并使用DomXPath 可能更合适。
为了回答您的问题,这两个库(以及 DomDocument + DomXPath)都是 PHP5 的标准配置,因此它们同样是不错的选择。
【讨论】: