[英]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.