Annotation of embedaddon/php/ext/simplexml/tests/bug42259.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: Bug #42259 (SimpleXMLIterator loses ancestry)
! 3: --SKIPIF--
! 4: <?php
! 5: if (!extension_loaded('simplexml')) print 'skip';
! 6: if (!extension_loaded("libxml")) print "skip LibXML not present";
! 7: ?>
! 8: --FILE--
! 9: <?php
! 10: $xml =<<<EOF
! 11: <xml>
! 12: <fieldset1>
! 13: <field1/>
! 14: <field2/>
! 15: </fieldset1>
! 16: <fieldset2>
! 17: <options>
! 18: <option1/>
! 19: <option2/>
! 20: <option3/>
! 21: </options>
! 22: <field1/>
! 23: <field2/>
! 24: </fieldset2>
! 25: </xml>
! 26: EOF;
! 27:
! 28: $sxe = new SimpleXMLIterator($xml);
! 29: $rit = new RecursiveIteratorIterator($sxe, RecursiveIteratorIterator::LEAVES_ONLY);
! 30: foreach ($rit as $child) {
! 31: $path = '';
! 32: $ancestry = $child->xpath('ancestor-or-self::*');
! 33: foreach ($ancestry as $ancestor) {
! 34: $path .= $ancestor->getName() . '/';
! 35: }
! 36: $path = substr($path, 0, strlen($path) - 1);
! 37: echo count($ancestry) . ' steps: ' . $path . PHP_EOL;
! 38: }
! 39: ?>
! 40: ===DONE===
! 41: --EXPECT--
! 42: 3 steps: xml/fieldset1/field1
! 43: 3 steps: xml/fieldset1/field2
! 44: 4 steps: xml/fieldset2/options/option1
! 45: 4 steps: xml/fieldset2/options/option2
! 46: 4 steps: xml/fieldset2/options/option3
! 47: 3 steps: xml/fieldset2/field1
! 48: 3 steps: xml/fieldset2/field2
! 49: ===DONE===
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>