ID: 26743 User updated by: olivier dot bichler at laposte dot net -Summary: getElementByTagName doesn't work properly Reported By: olivier dot bichler at laposte dot net Status: Open Bug Type: *XML functions Operating System: Windows XP (with SP1) PHP Version: 5.0.0b2 (beta2) New Comment:
Sorry, the name of the function is getElementsByTagName with "s" at "Element". Previous Comments: ------------------------------------------------------------------------ [2003-12-29 10:34:18] olivier dot bichler at laposte dot net Description: ------------ The DOM function "getElementByTagName" doesn't work properly when it's call from an element. The W3C specification say "Returns a NodeList of all DESCENDANT Elements with a given tag name, in the order in which they are encountered in a preorder traversal of this Element tree." But getElementByTagName return ALL elements encountered after the current element and not only the descendant elements in the tree... Reproduce code: --------------- <?php $xml = '<?xml version="1.0"?> <config><section id="section1"> <param name="param1">value1</param> <param name="param2">value2</param> </section> <section id="section2"> <param name="param3">value3</param> </section> </config>'; $dom = new DomDocument; $dom -> loadXML($xml); $params = $dom -> documentElement -> firstChild -> getElementsByTagName('param'); foreach ($params as $param) { echo $param -> getAttribute('name').'<br />'; } ?> Expected result: ---------------- param1 param2 (according with the W3C specifications) Actual result: -------------- param1 param2 param3 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=26743&edit=1