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

Reply via email to