我正在尝试跨多个Xpath查询访问多个项目,同时使用第一个查询作为基础。
我试过了:
$playerinfo = $xpath->query('//*[@class="PlayerHeader"]');
$playername = $xpath->query('/h3/a', $playerinfo);
echo $playername->item(0)->nodeValue;
没有返回任何内容。如果我做
$playerinfo = $xpath->query('//*[@class="PlayerHeader"]/h3/a');
echo $playerinfo->item(0)->nodeValue;
工作正常。任何帮助表示赞赏。
答案 0 :(得分:3)
$playername = $xpath->query('/h3/a', $playerinfo);
您正在尝试针对节点评估绝对 XPath表达式 - 这没有意义。
始终评估绝对表达式,将文档节点作为上下文节点。
没有/h3
节点(顶部元素可能是html
,而不是h3
,因此,也没有/h3/a
节点。
解决方案:使用相对表达式:h3/a
。
推荐:阅读“相对和绝对XPath表达式”并理解此主题。
答案 1 :(得分:1)
$ playerinfo是匹配节点的列表 - 当您将其用作后续搜索的上下文时,上下文只能是SINGLE节点,而不是节点列表:
$playername = $xpath->query('/h3/a', $playerinfo->item(0));