1--TEST-- 2SPL: SimpleXMLIterator and getChildren() 3--SKIPIF-- 4<?php 5if (!extension_loaded('simplexml')) print 'skip'; 6if (!extension_loaded("libxml")) print "skip LibXML not present"; 7?> 8--FILE-- 9<?php 10 11$xml =<<<EOF 12<?xml version='1.0'?> 13<!DOCTYPE sxe SYSTEM "notfound.dtd"> 14<sxe id="elem1"> 15 Plain text. 16 <elem1 attr1='first'> 17 Bla bla 1. 18 <!-- comment --> 19 <elem2> 20 Here we have some text data. 21 <elem3> 22 And here some more. 23 <elem4> 24 Wow once again. 25 </elem4> 26 </elem3> 27 </elem2> 28 </elem1> 29 <elem11 attr2='second'> 30 Bla bla 2. 31 <elem111> 32 Foo Bar 33 </elem111> 34 </elem11> 35</sxe> 36EOF; 37 38$sxe = simplexml_load_string($xml, 'SimpleXMLIterator'); 39 40foreach($sxe->getChildren() as $name => $data) { 41 var_dump($name); 42 var_dump(get_class($data)); 43 var_dump(trim($data)); 44} 45 46echo "===RESET===\n"; 47 48for ($sxe->rewind(); $sxe->valid(); $sxe->next()) { 49 var_dump($sxe->hasChildren()); 50 var_dump(trim($sxe->key())); 51 var_dump(trim($sxe->current())); 52 foreach($sxe->getChildren() as $name => $data) { 53 var_dump($name); 54 var_dump(get_class($data)); 55 var_dump(trim($data)); 56 } 57} 58 59?> 60===DONE=== 61--EXPECTF-- 62Warning: Invalid argument supplied for foreach() in %ssxe_003.php on line %d 63===RESET=== 64bool(true) 65string(5) "elem1" 66string(10) "Bla bla 1." 67string(5) "elem2" 68string(17) "SimpleXMLIterator" 69string(28) "Here we have some text data." 70bool(true) 71string(6) "elem11" 72string(10) "Bla bla 2." 73string(7) "elem111" 74string(17) "SimpleXMLIterator" 75string(7) "Foo Bar" 76===DONE=== 77