0

这里我如何得到我的 dom 树:

$html = file_get_contents('somefile.html');
$dom = new DOMDocument();
@$dom->loadHTML($html);
$dom_document = new DomXPath($dom);
$dom_object = $dom_document->query('somePathHere');

$dom_object的html结构:

<div>
  <a href='something'>some text here</a>
  I want this
</div>

这是我需要的:

foreach($dom_object as $value){
     echo $value->getElementsByTagName('a')->item(0)->nodeValue; //working properly
     echo 'I want this' // I don't know how to get that 'I want this' text
}

精度:我想避免进行多个 xpath 查询。我想坚持我的……提前谢谢你。干杯。马克

4

2 回答 2

0

使用 nodeType 获取文本节点:

foreach($nodes as $node) {
    if($node -> nodeType == 3) {
        echo $node -> nodeValue . "<br />";
    }
}

解释:在 php DOMDocument 中,任何文本都在节点内。在您的情况下,它是一个文本节点,根据 PHP 的 XML_NODE_CONSTANTS 表示 3

详情:http ://www.php.net/manual/en/class.domnode.php

于 2012-05-17T14:20:30.323 回答
0

我不知道您的 xml 的预期结构,但这适用于您的特定请求:

/html/body/div/text()

这仅选择具有相关 div 的直接父级的文本节点。您也可以使用 general //div/text(),但更具体的查询通常更好/更快。

于 2012-05-17T16:07:50.533 回答