ID: 37669 Updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] -Status: Assigned +Status: Bogus Bug Type: SimpleXML related Operating System: Linux (Gentoo, RHEL) PHP Version: 5.1.4 Assigned To: helly 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 You have to use DOM there. All you were doing was replacing the item at index 0 in the $nodes array with the string "World". Previous Comments: ------------------------------------------------------------------------ [2006-06-20 14:25:24] [EMAIL PROTECTED] Marcus, could you pla take a look at it? ------------------------------------------------------------------------ [2006-06-02 04:39:49] [EMAIL PROTECTED] 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); ------------------------------------------------------------------------ [2006-06-02 00:44:25] [EMAIL PROTECTED] 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