Well, as far as I understand, the content thing is not compltely imlpemented (there's even a note about this in the source). Sadly, no time currently to fix it.
- Markus On Wed, Feb 13, 2002 at 12:11:58PM -0500, Rob Richards wrote : > Thanks, but same results. > > when I put the example code up there I also was thinking who would ever need > to set and then read the same information. Unfortunately our real case > scenario runs into this. > > Just for reference: We have a complex workflow, so have no idea where we are > in the workflow we are when information is passed to through it. We have a > case, which is how we found this problem, where data is set and then in > another point in the workflow the information is accessed. Only work around > we could come up with was to hard code an indicator which identified when we > were in this problem section so that it would ignore reading the newly set > data and use the information we had previously set. > > Thanks for the help. > > Rob > > ----- Original Message ----- > From: "Joseph Tate" <[EMAIL PROTECTED]> > To: "Rob Richards" <[EMAIL PROTECTED]>; "Php-Dev List" > <[EMAIL PROTECTED]> > Sent: Wednesday, February 13, 2002 11:51 AM > Subject: RE: Bug #15530 Updated: conent of node node correct reading new DOM > value after set_content of node > > > > Ok, try the following code: > > > > function getContent ($n) > > { > > if (!($children = $n->children())) return ''; > > > > $content = ''; > > foreach ($children as $c) { > > if ($c->type == XML_TEXT_NODE) { > > $content .= $c->content; > > } > > } > > > > return $content; > > } > > > > Then use getContent($n) rather than $n->content. This could fix your > > problem, but I'm not sure. It still uses the ->content property (though > in > > a TEXT_NODE context). I don't actually make changes and then read back > the > > contents in any of my code, so this is new to me. > > > > As for the time frame for the next release of php? I don't know. > > > > Joseph > > > > > -----Original Message----- > > > From: Rob Richards [mailto:[EMAIL PROTECTED]] > > > Sent: Wednesday, February 13, 2002 11:42 AM > > > To: Joseph Tate > > > Subject: Re: Bug #15530 Updated: conent of node node correct reading new > > > DOM value after set_content of node > > > > > > > > > Management's definition of a custom build is any package or port > > > that we use > > > not coming from a maintainer - go figure. This includes grabbing CVS > > > updates. Losing battle trying to argue this with them. > > > > > > We have built a package for RedHat 7.2, 7.1 as well as FreeBSD, but the > > > ultimate server is out of our control and they will only use the FreeBSD > > > ports they can pull from within it. > > > > > > Basically, we are stuck with our code needing to run on the > > > FreeBSD version > > > they run which right now only is up to revision 1.90 of the domxml code. > > > > > > Do you happen to know any time frame for a next release? This may not > be > > > much of a problem depending upon that. > > > > > > Thanks, > > > > > > Rob > > > > > > ----- Original Message ----- > > > From: "Joseph Tate" <[EMAIL PROTECTED]> > > > To: <[EMAIL PROTECTED]>; "Php-Dev List" <[EMAIL PROTECTED]> > > > Sent: Wednesday, February 13, 2002 11:19 AM > > > Subject: RE: Bug #15530 Updated: conent of node node correct > > > reading new DOM > > > value after set_content of node > > > > > > > > > > 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: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] > > > > > Sent: Wednesday, February 13, 2002 11:04 AM > > > > > To: [EMAIL PROTECTED] > > > > > Subject: Bug #15530 Updated: conent of node node correct > > > reading new DOM > > > > > value after set_content of node > > > > > > > > > > > > > > > ID: 15530 > > > > > Updated by: [EMAIL PROTECTED] > > > > > Reported By: [EMAIL PROTECTED] > > > > > 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] [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 > > > -- > PHP Development Mailing List <http://www.php.net/> > To unsubscribe, visit: http://www.php.net/unsub.php -- Please always Cc to me when replying to me on the lists. GnuPG Key: http://guru.josefine.at/~mfischer/C2272BD0.asc -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.php