Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to update XML using XPath and Java

Tags:

java

xml

xpath

I have an XML document, and an XPath expression for that doc. I have to update the doc by using XPath at runtime.

How can I do this using Java?

The below is my xml:

<?xml version="1.0" encoding="ISO-8859-1"?> <PersonList>     <Person>         <Name>Sonu Kapoor</Name>         <Age>24</Age>         <Gender>M</Gender>         <PostalCode>54879</PostalCode>     </Person>     <Person>         <Name>Jasmin</Name>         <Age>28</Age>         <Gender>F</Gender>         <PostalCode>78745</PostalCode>     </Person>     <Person>         <Name>Josef</Name>         <Age>232</Age>         <Gender>F</Gender>         <PostalCode>53454</PostalCode>     </Person> </PersonList> 

I have to change the values of name and age under //PersonList/Person[2]/Name.

like image 222
samash Avatar asked May 25 '11 12:05

samash


1 Answers

Use setNodeValue. First, get a NodeList, for example:

myNodeList = (NodeList) xpath.compile("//MyXPath/text()")            .evaluate(myXmlDoc, XPathConstants.NODESET); 

Then set the value of e.g. the first node:

myNodeList.item(0).setNodeValue("Hi mom!"); 

More examples e.g. here.

As mentioned in two other answers here, as well as in your previous question: technically, XPath is not a way to "update" an XML document, but only to locate nodes within an XML document. But I presume the above is what you want.

EDIT: Responding to your comment... Are you asking how to write your DOM to an XML file after you've finished editing the DOM? If so, here are two examples of how to do it:

http://www.java2s.com/Code/Java/XML/WriteDOMout.htm

http://download.oracle.com/javaee/1.4/tutorial/doc/JAXPXSLT4.html

like image 124
Jean-François Corbett Avatar answered Sep 22 '22 12:09

Jean-François Corbett