有一个真正的 Xpath 问题。我正在尝试将节点与某个值匹配。
这是一个示例 XML 片段。
http://pastie.org/private/xrjb2ncya8rdm8rckrjqg
我正在尝试匹配给定的 MatchNumber 节点值以查看是否有两个或更多。假设这存储在一个名为 $data 的变量中,我正在使用以下表达式。自从我做了很多 XPath 以来已经有一段时间了,因为这些天大多数东西似乎都是 JSON,所以请原谅任何新手疏忽。
$doc = new DOMDocument;
$doc->load($data);
$xpath = new DOMXPath($doc);
$result = $xpath->query("/CupRoundSpot/MatchNumber[.='1']");
我需要基本上匹配任何匹配编号值为 1 的节点,然后确定结果长度是否大于 1(即已找到 2 个或更多)。
非常感谢您的帮助。
最佳答案
您的 XML 文档有一个默认命名空间:xmlns="http://www.fixtureslive.com/"
.
您必须 register this namespace在 xpath 元素上并在查询中使用(注册的)前缀。
$xpath->registerNamespace ('fl' , 'http://www.fixtureslive.com/');
$result = $xpath->query("/fl:ArrayOfCupRoundSpot/fl:CupRoundSpot/fl:MatchNumber[.='1']");
foreach( $result as $e ) {
echo '.';
}
关于PHP XPath 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22795443/