x Java Java 8 JUnit JSON
  • XML
  • JDBC Spring Boot Microservices React Contact Us

    Create XML file in Java using DOM parser

    You can create or write a XML file using DOM Parser. First you will create a transformer object to wire a DOMSource to a StreamResult. You will then invoke the transformer's transform() method to write out the DOM as XML data.

    1) Create XML file with nodes and text value:

    XML file that you want to create: employees.xml

    <?xml version="1.0"?>    
    <employees>
        <employee>
    	<firstname>Mohit</firstname>
    	<lastname>Bisht</lastname>
        </employee>
        <employee>
            <firstname>Samit</firstname>
            <lastname>Ahlawat</lastname>
        </employee>
    </employees>
    	
    // Creates XML file using Java DOM parser
    import java.io.File;
     
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.transform.OutputKeys;
    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;
    				
    public class WriteXMLDOMParser {
        public static void main(String[] args) {
            try {
                DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
                DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
                Document doc = dBuilder.newDocument();
                    
                Element rootElement = doc.createElementNS("", "employees");
                doc.appendChild(rootElement);
                    
                rootElement.appendChild(createElement(doc, "Mohit", "Bisht"));
                rootElement.appendChild(createElement(doc, "Samit", "Ahlawat"));
                    
                TransformerFactory transformerFactory = TransformerFactory.newInstance();
                Transformer transformer = transformerFactory.newTransformer();
                    
                transformer.setOutputProperty(OutputKeys.INDENT, "yes");
                DOMSource source = new DOMSource(doc);
                    
                StreamResult console = new StreamResult(System.out);
                StreamResult file = new StreamResult(new File("E:\\employees.xml"));
                    
                transformer.transform(source, console);
                transformer.transform(source, file);
                    
            } catch (Exception e) {
                e.printStackTrace();
            } 
    
        }
            
        private static Element createElement(Document doc, String firstname, String lastname) {
            Element employee = doc.createElement("Employee");
                   
            Element node1 = doc.createElement("firstname");
            node1.appendChild(doc.createTextNode(firstname));
                    
            employee.appendChild(node1);
                    
            Element node2 = doc.createElement("lastname");
            node2.appendChild(doc.createTextNode(lastname));
                    
            employee.appendChild(node2);
                
            return employee;
        }
    }
    	

    Output :

    <?xml version="1.0"?>    
    <employees>
        <employee>
    	<firstname>Mohit</firstname>
    	<lastname>Bisht</lastname>
        </employee>
        <employee>
            <firstname>Samit</firstname>
            <lastname>Ahlawat</lastname>
        </employee>
    </employees>
        

    2) Create elements with multiple attributes in XML file:

    XML file that you want to create: employees.xml
    <?xml version="1.0"?>    
    <employees>
        <employee department="hr", id="123">
    	<firstname>Mohit</firstname>
    	<lastname>Bisht</lastname>
        </employee>
        <employee department="finance" id="456">
            <firstname>Samit</firstname>
            <lastname>Ahlawat</lastname>
        </employee>
    </employees>
    	
    import java.io.File;
     
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.transform.OutputKeys;
    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;
    				
    public class WriteXMLDOMParser {
        public static void main(String[] args) {
            try {
                DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
                DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
                Document doc = dBuilder.newDocument();
                    
                Element rootElement = doc.createElementNS("", "employees");
                doc.appendChild(rootElement);
                    
                rootElement.appendChild(createElement(doc, "123", "hr", "Mohit", "Bisht"));
                rootElement.appendChild(createElement(doc, "456", "finance", "Samit", "Ahlawat"));
                    
                TransformerFactory transformerFactory = TransformerFactory.newInstance();
                Transformer transformer = transformerFactory.newTransformer();
                    
                transformer.setOutputProperty(OutputKeys.INDENT, "yes");
                DOMSource source = new DOMSource(doc);
                    
                StreamResult console = new StreamResult(System.out);
                StreamResult file = new StreamResult(new File("E:\\employees.xml"));
                    
                transformer.transform(source, console);
                transformer.transform(source, file);
                    
            } catch (Exception e) {
                    e.printStackTrace();
            } 
    
        }
            
        private static Element createElement(Document doc, String id, String department,
                String firstname, String lastname) {
            
            Element employee = doc.createElement("employee");
            employee.setAttribute("id", id);
            employee.setAttribute("department", department);
                    
            Element node1 = doc.createElement("firstname");
            node1.appendChild(doc.createTextNode(firstname));
                    
            employee.appendChild(node1);
                   
            Element node2 = doc.createElement("lastname");
            node2.appendChild(doc.createTextNode(lastname));
                    
            employee.appendChild(node2);
                
            return employee;
        }
    }
    	

    Output :

    <?xml version="1.0"?>    
    <employees>
        <employee department="hr" id="123">
    	<firstname>Mohit</firstname>
    	<lastname>Bisht</lastname>
        </employee>
        <employee department="finance" id="456">
            <firstname>Samit</firstname>
            <lastname>Ahlawat</lastname>
        </employee>
    </employees>
        

    References:
    https://docs.oracle.com/javase/tutorial/jaxp/xslt/writingDom.html
    Comments

    Leave a Reply

    Your email address will not be published. Required fields are marked *











    Share This