php dom 获取嵌套中的节点值

php dom get nodevalue in nest

我有一棵这样的 xml 树:

<root>
    <a>This is a</a>
    <b>
        <b-1>Im a child of b-1</b-1>
        <b-1>Im a child of b-1</b-1>
    </b>
</root>

我累了

$str = $dom->getElementsByTagName("b")->item(1);
$str->nodeValue;

这里把节点值作为一个完整的字符串输出,如何单独获取节点值?

您需要这样遍历每个 <b> 及其子节点:

foreach ($dom->getElementsByTagName("b") as $b) {   // 1
    foreach ($b->childNodes as $node) {             // 2
        if ($node->nodeType === XML_ELEMENT_NODE) { // 3
            echo $node->nodeValue, PHP_EOL;         // 4
        }
    }
}
  1. 遍历<b>个元素
  2. 遍历每个<b>元素的子节点
  3. 检查当前节点是 DOM element 而不是 text 节点
  4. 打印子值或做任何你需要的

输出:

Im a child of b-1
Im a child of b-1