You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-users@xalan.apache.org by "Liu, Richard" <Ri...@boeing.com> on 2004/03/01 15:54:22 UTC

Do we have any way to update or change the value of of a DOMTREE in the memory using xpath and Xalan libiary ?

Hi, 

  I have a general question in terms of xpath ability.

  I know we can extract (get) the specific value of a node using xPath query.

  However, our application needs to have the ability to change or update the value of certain nodes, I have no idea if we can do it?
  If using xPath and Xalan library can not do it, do we have any other tools that may support this ability ?


Thanks

Richard Liu
Software Engineer at Boeing

 

RE: Do we have any way to update or change the value of of a DOMTREE in the memory using xpath and Xalan libiary ?

Posted by Erik Rydgren <er...@mandarinen.se>.
Xalan can do it. You simply select the nodes you are interested in with
XPath and loop over the result while applying your changes.

(Warning: The following code is written on top of my head and may
contain errors or cause confusion)

For instance assume that you have this document in memory:

<doc>
  <wanteditem attr="value1"/>
  <notwanteditem attr="somevalue"/>
  <wanteditem attr="value2"/>
</doc>

Then assume that you want to change all /doc/wanteditem/@attr value to
foobar.

- First select your nodes with Xalan XPath using a XercesDocumentWrapper
and XPath evaluator. (xpath: /doc/wanteditem/@attr)
You will get a XObject that is a nodeset of 2 attribute nodes.
- Extract the nodeset object from the XObject. (Method on the XObject)
- Loop through the nodeset getting XalanNode pointers.
- The Xalan nodes are read only so you need to map the XalanNodes to
XercesNodes. This is done with the XercesDocumentWrapper::map method.
- You will then have the node that corresponds to the attr. Do a
setNodeValue to "foobar".
- Repeat for each node in the nodeset and you are done.

Remember to rebuild the XercesDocumentWrapper between changes in the
document.

/ Erik

> -----Original Message-----
> From: Liu, Richard [mailto:Richard.Liu@boeing.com]
> Sent: den 1 mars 2004 15:54
> To: xalan-c-users@xml.apache.org
> Subject: Do we have any way to update or change the value of of a
DOMTREE
> in the memory using xpath and Xalan libiary ?
> 
> Hi,
> 
>   I have a general question in terms of xpath ability.
> 
>   I know we can extract (get) the specific value of a node using xPath
> query.
> 
>   However, our application needs to have the ability to change or
update
> the value of certain nodes, I have no idea if we can do it?
>   If using xPath and Xalan library can not do it, do we have any other
> tools that may support this ability ?
> 
> 
> Thanks
> 
> Richard Liu
> Software Engineer at Boeing
> 
>