Tuesday, 13 October 2015

Update data in XML using DOM Parser


Jar Required: jdom.jar

Directory structure in eclipse:


XML before Updation:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<sky>
      <employee empid="101">
            <name>Sumit Kumar</name>
            <email>xyz@yahoo.com</email>
      </employee>
      <employee empid="102">
            <name>Sunil Kumar</name>
            <email>skumar102@outlook.com</email>
      </employee>

</sky>

SKYDOMUpdater.java:
package com.sky.parse.dom;

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;

public class SKYDOMUpdater {
public static void main(String argv[]) {
try {
DocumentBuilderFactory documentFactory =DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentFactory.newDocumentBuilder();
Document document = documentBuilder.parse("src/sky.xml");
Node employee = document.getElementsByTagName("employee").item(0);
NamedNodeMap attribute = employee.getAttributes();
Node empid = attribute.getNamedItem("empid");
empid.setTextContent("201");
Element mobileNo = document.createElement("mobile");
mobileNo.appendChild(document.createTextNode("9999999999"));
employee.appendChild(mobileNo);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult("src/sky.xml");
transformer.transform(source, result);
} catch (Exception e) {
e.printStackTrace();
}
}

}


XML After Updation:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<sky>
      <employee empid="201">
            <name>Sumit Kumar</name>
            <email>xyz@yahoo.com</email>
            <mobile>9999999999</mobile>
      </employee>
      <employee empid="102">
            <name>Sunil Kumar</name>
            <email>skumar102@outlook.com</email>
      </employee>

</sky>

No comments:

Post a Comment