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--EXPECTF-- 61Warning: foreach() argument must be of type array|object, null given in %ssxe_003.php on line %d 62===RESET=== 63bool(true) 64string(5) "elem1" 65string(10) "Bla bla 1." 66string(5) "elem2" 67string(17) "SimpleXMLIterator" 68string(28) "Here we have some text data." 69bool(true) 70string(6) "elem11" 71string(10) "Bla bla 2." 72string(7) "elem111" 73string(17) "SimpleXMLIterator" 74string(7) "Foo Bar" 75