Locate a Node and Change Its
Content
This Example shows you how to Change the Content of a
node in a DOM document. JAXP (Java API for XML Processing) is an interface which
provides parsing of xml documents. Here the Document BuilderFactory is used to
create new DOM parsers. These are some of the methods used in code given below
for adding attribute:-
Element root = doc.getDocumentElement():-direct access
to the root of the DOM document.
NodeList childnodelist = root.getChildNodes():-created
a childnodelist and get the collection of child nodes of this node.
Xml code for the program generated is:-
<?xml version="1.0"
encoding="UTF-8"?>
<Company>
<Employee>
<Employeename>Girish
Tewari</Employeename>
<email>[email protected]</email>
</Employee>
<Employee>
<Employeename>Komal</Employeename>
<email>[email protected]</email>
</Employee>
<Employee>
<Employeename>Mahendra</Employeename>
<email>[email protected]</email>
</Employee>
</Company> |
Changecontent.java :-
/*
* @Program that Locate a Node and Change Its Content
* UsingSibling.java
* Author:-RoseIndia Team
* Date:-09-Jun-2008
*/
import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
public class Changecontent {
public static void main(String[] args) throws Exception {
boolean validating = false;
DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
factory.setValidating(validating);
Document doc =
factory.newDocumentBuilder().parse(new File("2.xml"));
new Changecontent().changeContent(doc,
"Girish Tewari", "@Rose.com");
}
public void changeContent(Document doc,
String newname, String newemail) {
Element root = doc.getDocumentElement();
//creating a nodelist
NodeList childnodelist = root.getChildNodes();
for (int i = 0; i < childnodelist.getLength(); i++) {
Node childnode = childnodelist.item(i);
Node subchildname = childnode.getFirstChild();
Text text = (Text) subchildname.getFirstChild();
String oldname = text.getData();
//compares oldname with newname
if (oldname.equals(newname)) {
//gets the next node of the subchild
subchildname=subchildname.getNextSibling();
System.out.println(subchildname.getNodeName());
text =(Text)subchildname.getFirstChild();
System.out.println("Old e-mail id: "
+text.getData());
text.setData(newemail);
System.out.println("New e-mail id: "
+text.getData());
}
}
}
} |
Output of the program:-
DownLoad
Source Code