ID:               15530
 Updated by:       [EMAIL PROTECTED]
-Summary:          conent of node node correct reading new DOM value
                   after set_content of node
 Reported By:      [EMAIL PROTECTED]
-Status:           Open
+Status:           Closed
 Bug Type:         DOM XML related
 Operating System: RedHat 7.2
 PHP Version:      4.1.1
 New Comment:

This bug has been fixed in CVS.

This has been fixed in CVS with the get_content() method.


Previous Comments:
------------------------------------------------------------------------

[2002-02-13 11:03:44] [EMAIL PROTECTED]

Any other workaround for the get_content problem?  We can use a custom
php build on our development machines, but cant on the server where the
code will actually be going.

Thanks

------------------------------------------------------------------------

[2002-02-13 10:43:55] [EMAIL PROTECTED]

The problem is that the content property is going away, so that
property is not set.  This is why it's not being updated.  It's being
replaced by a get_content() function.  This is in CVS at this very
moment.

As for the appending of xml contents, the comment in the code is as
follows:
// FIXME: another gotcha. If node has children, calling
// xmlNodeSetContent will remove the children -> we loose the zval's
// To prevent crash, append content if children are set


I think if you just used the get_content() function instead of the
->content property that your problem would go away.  Of course you're
going to have to pull it from CVS.

------------------------------------------------------------------------

[2002-02-12 16:18:23] [EMAIL PROTECTED]

The following simplied script shows that when we update the value of a
node, the DOM is updated as shown through the dump.  When you try to
read the content of the node however, it returns the origional value. 


If this is a bug, is there any known workaround to get the desired
result?

Also, we had to use the set_content as provided in the script because
if a node already has a value and we try to call set_content directly
on the node rather than on the the text element (value node), it
appends the data to the node rather than overwriting the exisitng
value.

XPath is used in here as our real XML data is quite complex so needed
to illustrate how we were finding the correct node.

<?
$xmltest = "<root_node><node1>ORG VALUE</node1></root_node>";
$mydoc = xmldoc($xmltest);
echo "<pre>".$mydoc->dumpmem()."</pre><br>";
$ctx=$mydoc->xpath_new_context();
$query_xo = xpath_eval($ctx,"/root_node/node1");
$oNode = $query_xo->nodeset[0];
if (is_null($oNode)) {
        $root = $$mydoc->root();
        $root->new_child("node1", "empty");
} else {
        $tNode = $oNode->first_child();
        $tNode->set_content("VALUE1");
}
echo "<pre>".$mydoc->dumpmem()."</pre><br>";
$ctx2=$mydoc->xpath_new_context();
$query_xo = xpath_eval($ctx2,"/root_node/node1");
$oNode = $query_xo->nodeset[0];
if (! is_null($oNode)) {
        $tNode = $oNode->first_child();
        $strValue = $tNode->content;
}
echo "<br>GET VAL".$strValue."<br>";
echo "<pre>".$mydoc->dumpmem()."</pre>";
?>


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=15530&edit=1

Reply via email to