RE: Bug #15530 Updated: conent of node node correct reading new DOM value after set_content of node
| From: | Joseph Tate | Date: | Wed, 13 Feb 2002 16:19:59 +0000 |
| Subject: | RE: Bug #15530 Updated: conent of node node correct reading new DOM value after set_content of node | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-80017@lists.php.net to get a copy of this message | ||
You kind of have to have a custom php build anyway because DOMXML stuff
isn't part of the RH php installation. I've got rpms for RH 7.2 if that
will help. They don't have the get_content stuff, but I could add that to
my custom patch (that fixes bug #14934) no problem. Besides, it'll be in
the next release; it's not "custom code" in the purest definition of the
term.
Joseph
> -----Original Message-----
> From: rrichards@digarc.com [mailto:rrichards@digarc.com]
> Sent: Wednesday, February 13, 2002 11:04 AM
> To: php-bugs@lists.php.net
> Subject: Bug #15530 Updated: conent of node node correct reading new DOM
> value after set_content of node
>
>
> ID: 15530
> Updated by: rrichards@digarc.com
> Reported By: rrichards@digarc.com
> Status: Open
> Bug Type: DOM XML related
> Operating System: RedHat 7.2
> PHP Version: 4.1.1
> New Comment:
>
> 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
>
>
> Previous Comments:
> ------------------------------------------------------------------------
>
> [2002-02-13 10:43:55] jtate@mi-corporation.NOSPAM.com
>
> 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] rrichards@digarc.com
>
> 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