如何使用SimpleXMLIterator递归遍历树?

时间:2017-12-07 11:53:27

标签: php xml simplexml

我有这个示例代码,为什么我的代码只能找到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>

1 个答案:

答案 0 :(得分:2)

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

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

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

Tag found: test2
Tag found: test3