Re: SimpleXMLIterator
| From: | Mathieu Bruneau | Date: | Sun, 29 Aug 2004 22:26:03 +0000 |
| Subject: | Re: SimpleXMLIterator | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-12459@lists.php.net to get a copy of this message | ||
Marcus Boerger wrote:
Hello Mathieu, Sunday, August 29, 2004, 4:18:25 AM, you wrote:Hi all,I have been playing with the SPL lately and today I ended up playing with the SimpleXMLIterator.The documentation on that class if fairly poor and I'm in fact requesting some information about it. I managed to create a SimpleXMLIterator passing it basic xml in the constructor but wasn't able to get anything from the getChildren() method and hasChildren() return false. The var_dump of the iterator show me the expected thing tough.
Nor does the current() or key() return anything. I'm using php5.0.1Example: <?php$xml = "<test><test1>Here we are</test1><test2>There</test2></test>";$it = new SimpleXMLIterator($xml);var_dump($it);while($it->hasChildren()) { echo "While\n"; $child = $it->getChildren(); }Try working with while($it->valid().... Besides that SimpleXMLIterator implements the RecursiveIterator interface.
What it does is iterating over one element and if teh element has sub elements then hasChildren() returns true and getchildren() returns the iterator for that sub element. To see what's going on have a look at ext/spl/tests/sxe_00*.phpt. regards marcusI already tried that but I figured out what I was doing wrong... You need to rewind the iterator before using it... I don't know why but I was assuming that it was ready for a loop! The other solution foreach is working as the foreach does a rewind() on it at first. -- Math aka ROunofF ====== argontechnologies.ca