On Mon, Jun 2, 2008 at 6:54 PM, sfurrh <[EMAIL PROTECTED]> wrote:
>
> Nevermind, I figured it out:
> Update upd=new Update(Update.AFTER,xpath,xml);
> String updStr=upd.toString();
> System.out.println("update="+updStr);
> uservice.update(updStr);
>
> Update rmv=new
> Update(Update.REMOVE,xpath+"["+matches+"]","");
> String rmvStr=rmv.toString();
> System.out.println("remove="+rmvStr);
> uservice.update(rmvStr);
>
> Where my Update class is just a utility to generate the xupdate string and
> "xml" is the new xml node and matches (in a while loop) is the index of the
> matching node.
Are you trying to replace all "config" elements in all documents in a
collection? If replacement nodes are all the same, there is no need to
have a loop, and the query may look similar to this:
<xupdate:modifications version='1.0'
xmlns:xupdate='http://www.xmldb.org/xupdate'>
<xupdate:rename select='/site/config'>config1</xupdate:rename>
<xupdate:insert-before select='/site/config1'>
<xupdate:element name="config">
<xupdate:element name="icon">images/myicon.jpg</xupdate:element>
<xupdate:element name="title">My great new site</xupdate:element>
</xupdate:element>
</xupdate:insert-before>
<xupdate:remove select='/site/config1'>
</xupdate:remove>
</xupdate:modifications>
Even if the replacement nodes are different, I would recommend to move
the query for deleting nodes out of the loop - each query results in
iterating over all documents in a collection, that would affect
execution time of the code.
Regards,
Natalia
>
>
>
> sfurrh wrote:
>>
>> I am new to xindice and xmldb (though not new to xml) and I am wondering
>> how I would go about replacing nodes. Xupdate works fine if i want to
>> replace the text content of a single node but how would I go about
>> replacing an entire node that is not a collection. For example:
>> my collection looks like this:
>> <site xmlns:src="http://xml.apache.org/xindice/Query" id="1"
>> src:col="/db/ArtSite" src:key="1">
>> <config>
>> <icon />
>> <title>New Site</title>
>> </config>
>> <owner>sean</owner>
>> <studio>
>> <pieces />
>> </studio>
>> <preferences />
>> </site>
>>
>> and i want to change the config node to look like this:
>> <config>
>> <icon>images/myicon.jpg</icon>
>> <title>My great new site</title>
>> </config>
>>
>> how would I do it without simply iterating through all of the nodes and
>> xupdating them individually?
>>
>> thanks for any info.
>>
>> Sean
>>
>>
>
> --
> View this message in context:
> http://www.nabble.com/Xindice---Replace-Node-tp17608708p17612662.html
> Sent from the Xindice - Dev mailing list archive at Nabble.com.
>
>