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

两者$foo->textContent$foo->nodeValue返回a b

我怎样才能得到a(来自节点的文本,没有来自任何子节点的文本)

4

3 回答 3

9

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

$txt = "";
foreach($foo->childNodes as $node) {
    if ($node->nodeType == XML_TEXT_NODE) {
        $txt .= $node->nodeValue;
    }
}
于 2013-03-29T12:44:07.657 回答
4

使用firstChild

$foo->firstChild->textContent;
于 2013-03-29T12:37:21.310 回答
4

试试这个代码

$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属性DOMNode返回一个对象,因为在 firstDOMText之前有一个“文本节点”<bar><foo>

于 2013-03-29T12:45:28.667 回答