xpath查询:仅检索孙子的值

James Zhao

在下面的test.html中,我只想使用xpath查询来检索“测试”一次

<html>
    <body>
        <div class="test1"></div>
        <div class="test2">
            <div><strong>Testing</strong></div>
        </div>
    </body>
</html>

这是我用来检索内容的php代码。

$uri='test.html';
$doc = new DOMDocument('1.0','utf-8');
$doc->loadHTMLFile($uri);
$xpath= new DOMXPath($doc);
$path="/html/body/div[2]//*"; 
$elements = $xpath->query($path);

if(!is_null($elements)){
    foreach($elements as $element){
        echo '<br>['.$element->nodeName.']';
        $nodes = $element->childNodes;
        foreach($nodes as $node){
            $nodeValue=$node->nodeValue;
            echo $nodeValue;
        }
    }
}

这是我得到的结果。

[div] Testing 
[strong] Testing

为什么即使在[div]节点中也打印“测试”?我希望它仅在[strong]节点中时才检索“测试”。

英格利斯·巴德森(Inglis Baderson)

这就是它的工作方式-nodeValue父节点将始终包含nodeValue其子节点的

nodeValue不太符合您的目标。您应该在其子级之间获取文本节点。看到这个问题:在PHP DOM中获取节点的文本

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章