2017-12-07 5 views
0

이 샘플 코드가 있는데, 왜 내 코드가 test3 태그 만 찾을 수 있습니까? test2와 test2는 어디에 있습니까?SimpleXMLIterator를 사용하여 재귀 적으로 트리를 걷는 방법?

$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

RecursiveIteratorIterator를 사용하여 기본 모드는 잎 (http://php.net/manual/en/recursiveiteratoriterator.construct.php)를 나열하는 JUST입니다. 당신이

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

에 건설을 변경하면이 ... 또한 구조와 의지 출력의 여러 다른 부분을 나열 할 것을 지시

Tag found: test2 
Tag found: test3 
관련 문제