domxpath-如何仅为父标记而不是子标记获取内容

时间:2014-11-10 11:37:05

标签: dom xpath

我正在使用domxpath查询来获取父标记的内容,只有(td [class ='s'])而不是包含嵌套在该td内的div内容,如下面的代码所示。

<?php
$second_trim='<td class="s" style="line-height:18px;">THIS TEXT IS REQUIRED and <div id="a"         style="display:none;background-color:black;border:1px solid #ddd;padding:5px;color:black;">THIS TEXT     IS  NOT REQUIRED </div></td>';
$dom = new DOMDocument();
$doc->validateOnParse = true;
@$dom->loadHTML($second_trim);
libxml_clear_errors();
$xpath = new DOMXpath($dom);

$b = $xpath->query('//td[@class="s"]');
    echo "<p style='font-size:14px;color:red;'><b style='font-size:18px;color:gray;'>cONTENT :-        </b>".$b->item(0)->nodeValue."</p>"; 
?> 

所以如何删除该div标签的内容并仅获取td的内容任何想法!!

1 个答案:

答案 0 :(得分:0)

修改

如果您只对直接文本内容感兴趣,请修改您的xpath查询:

$b = $xpath->query('//td[@class="s"]/text()');
echo '<p style="font-size:14px;color:red;">'
        .'<b style="font-size:18px;color:gray;">cONTENT :-        </b>'
        .$b->item(0)->nodeValue
    .'</p>';

现在结果非常具体到示例: 如果存在多个直接文本节点,则不会显示该节点。要通过DOMNodeList foreach执行$b并回显每个选定的节点值。