DOM parser to modify xml file in java

Steps to modify XML file:

1. Create a Document with DocumentBuilder class.
2. Fetch the xml elements.
3. Update the xml elements.
4. Write the whole data on a file using Transformer class.

Example:

DOMParserModifyTest.java

import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
 
/**
 * This class is used to modify XML document using DOM parser.
 * @author w3schools
 */
public class DOMParserModifyTest {
	public static void main(String args[]) {
	     try {
		//File Path
		String filePath = "D:\\class.xml";
 
		//Read XML file.
		File inputFile = new File(filePath);
 
		//Create DocumentBuilderFactory object.
		DocumentBuilderFactory dbFactory = 
                                   DocumentBuilderFactory.newInstance();
 
		//Get DocumentBuilder object.
		DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
 
		//Parse XML file.
		Document document = dBuilder.parse(inputFile);
 
		//Get element by tag name.
		Node students = 
                     document.getElementsByTagName("students").item(0);
 
		//Update students attribute.
		NamedNodeMap attr = students.getAttributes();
		Node nodeAttr = attr.getNamedItem("className");
		nodeAttr.setTextContent("CSE 1st");
 
		//Get student element list.
		NodeList list = students.getChildNodes();
 
		//Iterate and process student.
		for (int temp = 0; temp < list.getLength(); temp++) {
		  Node node = list.item(temp);
		  if (node.getNodeType() == Node.ELEMENT_NODE) {
		    Element stuElement = (Element) node;
		    if ("studentName".equals(stuElement.getNodeName())) {
		     if("Prabhjot".equals(stuElement.getTextContent())){
				stuElement.setTextContent("Swati Aneja");
		     }
		    }						
		   }
		}
 
 
		//Save changes into XML file.
		TransformerFactory transformerFactory = 
			          TransformerFactory.newInstance();
		Transformer transformer=
                               transformerFactory.newTransformer();
		DOMSource source = new DOMSource(document);
		StreamResult result=new StreamResult(new File(filePath));
		transformer.transform(source, result);
 
		//For console Output.
		StreamResult consoleResult = new StreamResult(System.out);
		transformer.transform(source, consoleResult);	
	      } catch (Exception e) {
		   e.printStackTrace();
	   }
	}
}

Output:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<class>
<students className="CSE 1st">
<studentName>Swati Aneja</studentName>
<studentName>Nidhi Gupta</studentName>
</students>
</class>

Download this example.
 
Next Topic: DOM XML parser to count xml file elements in java.
Previous Topic: DOM XML parser to create xml file in java.