DomDocumentTree.java - Build DOM Document Tree

Q

How to build an XML document tree with the DOM API?

✍: FYIcenter

A

If you want to build an XML document tree with the DOM (Document Object Model) API, you can follow these suggestions:

1. Use the factory class to create DocumentBuilder object:

      DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();
      DocumentBuilder b = f.newDocumentBuilder();

2. Call the newDocument() method on the DocumentBuilder object to create a new Document object:

      Document d = b.newDocument();
      System.out.println("Implementation class:\n   "+d.getClass().getName());

3. Call the createElement() method on the Document object to create a new Element object. Then add it to the Document as the root element:

      Element e = d.createElement("User"); 
      d.appendChild(e);

3. Call the createElement() method on the Document object repeatedly to create new Element objects. Then add them to parent elements to build the XML document tree:

    Element c = d.createElement("ID");
    c.appendChild(d.createTextNode("202"));
    e.appendChild(c);

Here is a complete example of parsing an XML file with DOM API, DomXmlParser.java:

// Copyright (c) 2017 FYIcenter.com
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class DomDocumentTree {
   static String dot = "............................................................";
   public static void main(String[] args) throws Exception {
      DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();
      DocumentBuilder b = f.newDocumentBuilder();
      Document d = b.newDocument();
      System.out.println("Implementation class:\n   "+d.getClass().getName());

      Element e = d.createElement("User"); 
      d.appendChild(e);
    
    Element c = d.createElement("ID");
    c.appendChild(d.createTextNode("202"));
    e.appendChild(c);

    c = d.createElement("Name");
    c.appendChild(d.createTextNode("Frank Y. Ivy"));
    e.appendChild(c);

    c = d.createElement("BirthDate");
    c.appendChild(d.createTextNode("1970-01-01"));
    e.appendChild(c);
    
      System.out.println("DOM object elements and text contents:");
    Node n = d.getDocumentElement();
    printText(n, 1);
   }
   
   public static void printText(Node n, int l) {
      String v = "";
      if (n.getNodeType()==Node.TEXT_NODE) v = n.getTextContent();
      System.out.println(dot.substring(0,l)+n.getNodeName()+":"+v);
    NodeList c = n.getChildNodes();
    for (int i=0; i<c.getLength(); i++) {
       printText(c.item(i),l+1);
    }
   }
}

Compile and run the example program, DomDocumentTree.java:

>\fyicenter\jdk-1.8.0\bin\javac DomDocumentTree.java

>\fyicenter\jdk-1.8.0\bin\java DomDocumentTree

Implementation class:
   com.sun.org.apache.xerces.internal.dom.DocumentImpl
   
DOM object elements and text contents:
.User:
..ID:
...#text:202
..Name:
...#text:Frank Y. Ivy
..BirthDate:
...#text:1970-01-01

 

DomXmlParser.java - Parse XML File with DOM API

Override Apache Xerces Included in Java SE 8

Using XML DOM API with Apache Xerces

⇑⇑ FAQ for Apache Xerces XML Parser

2017-09-08, 1728🔥, 0💬