#37669 [Opn]: Setting a node's value from array returned by xpath does not work

From: Date: Fri, 02 Jun 2006 04:39:49 +0000
Subject: #37669 [Opn]: Setting a node's value from array returned by xpath does not work
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-97948@lists.php.net to get a copy of this message
ID: 37669 User updated by: justinpatrin@php.net Reported By: justinpatrin@php.net Status: Open Bug Type: SimpleXML related Operating System: Linux (Gentoo, RHEL) PHP Version: 5.1.4 New Comment: I've come up with a workaround which imports the SimpleXML obkect into DOM and then converts back, but this, of course, defeats the purpose of SimpleXML. For reference I will post it here for others who need a solution to this problem: $domnode = dom_import_simplexml($xml); $dom = new DOMDocument(); $domnode = $dom->importNode($domnode, true); $dom->appendChild($domnode); $x = new DOMXPath($dom); $n = $x->evaluate('/root/node'); while ($n->item(0)->firstChild) { $n->item(0)->removeChild($n->firstChild); } $n->item(0)->appendChild($dom->createTextNode('World')); $xml = simplexml_import_dom($dom); Previous Comments: ------------------------------------------------------------------------ [2006-06-02 00:44:25] justinpatrin@php.net Description: ------------ When trying to set the value (inside text) of a node from an array returned from an xpath call nothing happens. Setting an attribute works fine, however. Setting via normal -> access works as expected. Reproduce code: --------------- $xml = simplexml_load_string('<root><node/><node2/></root>'); if (is_array($nodes = $xml->xpath('node')) && sizeof($nodes) > 0 && is_object($nodes[0])) { $nodes[0]['value'] = 'Hello'; $nodes[0] = 'World'; } $xml->node2 = 'World'; header('Content-Type: text/xml'); echo $xml->asXML(); Expected result: ---------------- <root><node value="Hello">World</node><node2>World</node2></root> Actual result: -------------- <root><node value="Hello"/><node2>World</node2></root> ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=37669&edit=1

« previous php.bugs (#97948) next »