我在使用带有DomXpath的parentNode时遇到了困难。
<?php
$html = <<<STR
<div id="bar">
<p>item1</p>
<ul>
<li class="foo">item2</li>
<li>item3</li>
<li>item4</li>
</ul>
</div>
STR;
$doc = new DOMDocument;
$doc->loadHTML( $html );
$xpath = new DomXpath($doc);
$nodeFoo = $xpath->query("//*[@id='bar']//*[@class='foo']");
echo $nodeFoo->item(0)->nodeValue;
$nodeClimb = $nodeFoo->parentNode; // causes an error
echo $nodeClimb.nodeName;
?>
我预计最后一行会产生'ul',它是检索到的节点$ nodeFoo的父节点名。我做错了什么?
答案 0 :(得分:2)
首先,您的最后一行有拼写错误:echo $nodeClimb.nodeName;
应为echo $nodeClimb->nodeName;
但是,您的主要问题是您在一行上发现但在下一行中没有发现:XPath查询不返回单个DOMNode
,而是包含所有匹配项的DOMNodeList
实例对于该查询。
正如您已选择列表中的第一个项目来回显(echo $nodeFoo->item(0)->nodeValue;
),您需要选择要指定为父项($nodeClimb = $nodeFoo->item(0)->parentNode;
)的项目。