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.