繁体   English   中英

PHP XML库未返回XPath结果

[英]PHP XML Libraries Not Returning XPath Results

我试图使用PHP和XPath从此XML中获取 ID元素为1364的所有Category节点: http : //education.oracle.co.uk/html/oracle/28US/schedule.xml

我的代码当前看起来像这样:

$schedule = new SimpleXMLElement("schedule.xml", null, true);
$nodes = $schedule->xpath("//category[id=1364]");
if(!$nodes) {
    echo "No xpath results.";
} else {
    echo count($nodes)." results.";
}

XPath不返回任何结果。 我已经使用其他XPath查询程序检查了查询,并返回了结果。

上面的代码使用SimpleXML,但是在使用DOMDocument时我遇到了完全相同的问题。 在SimpleXML和DOMDocument中,都可以运行XPath为“ // *”的工作,并返回文档中的所有节点。

谢谢!

一个疯狂的猜测,这是一个名称空间问题

您的XML文档可能包含以下内容

<root xmlns="http://some.uri">
    <category id="1364"/>
</root>

因为<category>在默认名称空间中,所以它没有任何前缀,但为了使XPath正常工作,您还需要将此名称空间绑定到某个前缀,然后在XPath表达式中使用该前缀。

$schedule->registerXPathNamespace("ns", "http://some.uri");
$nodes = $schedule->xpath('//ns:category[id=1364]');

没有名称空间前缀的XPath(1.0)表达式始终仅与无名称空间中的目标匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM