获取节点的文本内容,但忽略子节点

时间:2013-03-29 12:21:22

标签: php domdocument

<foo>
  a
  <bar> b </bar>
</foo>

$foo->textContent$foo->nodeValue都会返回a b

如何才能获得a(来自节点的文本,没有来自任何子节点的文本)

3 个答案:

答案 0 :(得分:7)

这可能会有所帮助。使用我找到的herehere

$txt = "";
foreach($foo->childNodes as $node) {
    if ($node->nodeType == XML_TEXT_NODE) {
        $txt .= $node->nodeValue;
    }
}

答案 1 :(得分:3)

使用firstChild

$foo->firstChild->textContent;

答案 2 :(得分:3)

试试此代码

$doc = new DOMDocument();
$doc->loadXML('<root><foo>a<bar>b</bar></foo><foo>bar</foo></root>');
$foos = $doc->getElementsByTagName('foo');
foreach($foos as $v){
   echo $v->firstChild->wholeText.'<br />';
}

firstChild的{​​{1}}属性会返回DOMNode个对象,因为在DOMText<bar>之前有一个“文本节点”