Edit report at https://bugs.php.net/bug.php?id=55766&edit=1
ID: 55766 Updated by: rricha...@php.net Reported by: ekazakov at parallels dot com Summary: Incorrect xPath in children nodes -Status: Open +Status: Bogus Type: Bug Package: SimpleXML related Operating System: CentOS 5 PHP Version: 5.3.8 Block user comment: N Private report: N New Comment: Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php Fix your xpath expression not to search entire document Previous Comments: ------------------------------------------------------------------------ [2011-09-23 05:57:19] ekazakov at parallels dot com Description: ------------ For children nodes SimpleXMLElement::xpath searches the matching xPath in parent node. Workaround: Create new instances of SimpleXMLElement for each child. $xmlNode = new SimpleXMLElement($xmlNode->asXML()); Test script: --------------- $xmlData = <<<XML <foo> <bar> <a>first</a> </bar> <bar> <a>second</a> </bar> </foo> XML; $xmlObj = new SimpleXMLElement($xmlData); foreach ($xmlObj->children() as $xmlNode) { echo "<br>" . htmlspecialchars($xmlNode->asXML()) . "<br>"; var_dump($xmlNode->xpath("//a")); } Expected result: ---------------- <bar> <a>first</a> </bar> array(1) { [0]=> object(SimpleXMLElement)#333 (1) { [0]=> string(5) "first" } } <bar> <a>second</a> </bar> array(1) { [0]=> object(SimpleXMLElement)#333 (1) { [0]=> string(6) "second" } } Actual result: -------------- <bar> <a>first</a> </bar> array(2) { [0]=> object(SimpleXMLElement)#333 (1) { [0]=> string(5) "first" } [1]=> object(SimpleXMLElement)#335 (1) { [0]=> string(6) "second" } } <bar> <a>second</a> </bar> array(2) { [0]=> object(SimpleXMLElement)#331 (1) { [0]=> string(5) "first" } [1]=> object(SimpleXMLElement)#333 (1) { [0]=> string(6) "second" } } ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=55766&edit=1