As we learned “Simple way to count number of XML elements in Java” earlier, here is another simple Java code which writes XML file in Java (DOM Parser).
- Writing Out a DOM as an XML File
- Java DOM tutorial – write XML with DOM in Java
- How to write XML file in Java (DOM Parser)
- Java: Simple Way to Write XML (DOM) File in Java
This is what I’m doing here:
- Creating Root XML element with name:
Companies
- Creating 4
Company
Element - Every Company Element has an attribute
id
- Every Company Element have 3 elements –
Name, Type, Employee
package crunchify.com.tutorials; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; 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; /** * @author Crunchify.com * In Java How to Create XML File using DOM parser? Writing Out a DOM as an XML File. * Version: 1.1 */ public class CrunchifyCreateXMLDOM { public static void main(String[] args) { // Defines a factory API that enables applications to obtain a parser that produces DOM object trees from XML documents. DocumentBuilderFactory crunchifyDocBuilderFactory = DocumentBuilderFactory.newInstance(); // Defines the API to obtain DOM Document instances from an XML document. DocumentBuilder crunchifyDocBuilder; try { crunchifyDocBuilder = crunchifyDocBuilderFactory.newDocumentBuilder(); // The Document interface represents the entire HTML or XML document. Document crunchifyDoc = crunchifyDocBuilder.newDocument(); // The Element interface represents an element in an HTML or XML document. Element mainRootElement = crunchifyDoc.createElementNS("https://crunchify.com/CrunchifyCreateXMLDOM", "Companies"); // Adds the node newChild to the end of the list of children of this node. // If the newChild is already in the tree, it is first removed. crunchifyDoc.appendChild(mainRootElement); // append child elements to root element mainRootElement.appendChild(getCompany(crunchifyDoc, "1", "Paypal", "Payment", "1000")); mainRootElement.appendChild(getCompany(crunchifyDoc, "2", "Amazon", "Shopping", "2000")); mainRootElement.appendChild(getCompany(crunchifyDoc, "3", "Google", "Search", "3000")); mainRootElement.appendChild(getCompany(crunchifyDoc, "4", "Crunchify", "Java Tutorials", "10")); // output DOM XML to console // An instance of this abstract class can transform a source tree into a result tree. Transformer crunchifyTransformer = TransformerFactory.newInstance().newTransformer(); crunchifyTransformer.setOutputProperty(OutputKeys.INDENT, "yes"); // Acts as a holder for a transformation Source tree in the form of a Document Object Model (DOM) tree. DOMSource source = new DOMSource(crunchifyDoc); // Acts as an holder for a transformation result, which may be XML, plain Text, HTML, or some other form of markup. StreamResult console = new StreamResult(System.out); crunchifyTransformer.transform(source, console); System.out.println("\nTutorial by Crunchify. XML DOM Created Successfully.."); } catch (TransformerException | ParserConfigurationException e) { e.printStackTrace(); } } // The Node interface is the primary datatype for the entire Document Object Model. // It represents a single node in the document tree. private static Node getCompany(Document doc, String id, String name, String age, String role) { Element crunchifyCompany = doc.createElement("Company"); crunchifyCompany.setAttribute("id", id); crunchifyCompany.appendChild(getCrunchifyCompanyElements(doc, crunchifyCompany, "Name", name)); crunchifyCompany.appendChild(getCrunchifyCompanyElements(doc, crunchifyCompany, "Type", age)); crunchifyCompany.appendChild(getCrunchifyCompanyElements(doc, crunchifyCompany, "Employees", role)); return crunchifyCompany; } // Utility method to create text node private static Node getCrunchifyCompanyElements(Document doc, Element element, String name, String value) { Element node = doc.createElement(name); node.appendChild(doc.createTextNode(value)); return node; } }
DocumentBuilderFactory:
Defines a factory API that enables applications to obtain a parser that produces DOM object trees from XML documents.
DocumentBuilder:
Defines the API to obtain DOM Document instances from an XML document.
appendChild():
adds the node newChild to the end of the list of children of this node. If the newChild is already in the tree, it is first removed.
Transformer:
An instance of this abstract class can transform a source tree into a result tree.
DOMSource:
Acts as a holder for a transformation Source tree in the form of a Document Object Model (DOM) tree.
StreamResult:
Acts as an holder for a transformation result, which may be XML, plain Text, HTML, or some other form of markup.
The Node
interface is the primary datatype for the entire Document Object Model. It represents a single node in the document tree.The Document
interface represents the entire HTML or XML document.The Element
Java Interface represents an element in an HTML or XML document.
Eclipse Console Output:
Run above program as a Java Application to get similar result as below.
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <Companies xmlns="https://crunchify.com/CrunchifyCreateXMLDOM"> <Company id="1"> <Name>Paypal</Name> <Type>Payment</Type> <Employees>1000</Employees> </Company> <Company id="2"> <Name>Amazon</Name> <Type>Shopping</Type> <Employees>2000</Employees> </Company> <Company id="3"> <Name>Google</Name> <Type>Search</Type> <Employees>3000</Employees> </Company> <Company id="4"> <Name>Crunchify</Name> <Type>Java Tutorials</Type> <Employees>10</Employees> </Company> </Companies> Tutorial by Crunchify. XML DOM Created Successfully.. Process finished with exit code 0