无法在PHP中将parentNode与DomXpath一起使用


Cannot Use parentNode with DomXpath in PHP

在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的父节点名称。我做错了什么?

首先,最后一行有一个拼写错误:echo $nodeClimb.nodeName;应该是echo $nodeClimb->nodeName;

然而,您的主要问题是您在一行中发现了一些问题,但在下一行中没有发现:XPath查询返回的不是单个DOMNode,而是包含该查询的所有匹配项的DOMNodeList实例。

因此,正如您选择了列表中要回显的第一个项目(echo $nodeFoo->item(0)->nodeValue;)一样,您需要选择一个项目来指定为父项($nodeClimb = $nodeFoo->item(0)->parentNode;)。