在下面的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]节点中时才检索“测试”。
这就是它的工作方式-nodeValue
父节点将始终包含nodeValue
其子节点的。
nodeValue
不太符合您的目标。您应该在其子级之间获取文本节点。看到这个问题:在PHP DOM中获取节点的文本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句