如何使用 SimpleXMLIterator 递归遍历树?

How to recursively walk tree with SimpleXMLIterator?

我有这个示例代码,为什么我的代码只能找到test3标签? test 和 test2 在哪里?

$iter = new RecursiveIteratorIterator(
    new SimpleXMLIterator(file_get_contents('./test.xml'))
);

foreach ($iter as $node) {
    echo "Tag found: ".$node->getName()."\n";
}

test.xml

<?xml version="1.0" encoding="UTF-8"?>
<test>
  <test2>
    <test3>dsfds</test3>
  </test2>
</test>

当使用 RecursiveIteratorIterator 时,默认模式只是列出树叶 (http://php.net/manual/en/recursiveiteratoriterator.construct.php)。如果将构造更改为

$iter = new RecursiveIteratorIterator(
        new SimpleXMLIterator($xml)
        , RecursiveIteratorIterator::SELF_FIRST);

这表示还要列出结构的各个其他部分,并将输出...

Tag found: test2
Tag found: test3