Here i will show a simple example to demonstrate how to read a XML file in Java with DOM parser.

The DOM interface is the easiest to understand. It parses an entire XML document and load it into memory, it also using the classes modeling or object modeling of whole XML document, this modeling concept can make us traversed easily to get it’s elements.

Remember

DOM Parser is slow and consume a lot memory if it load a XML document 
which contains a lot of data.Please consider SAX parser as solution for it, 
SAX is faster than DOM and use less memory

If you want to compare different implementation between DOM and SAX, Please visit here for How to read XML file in Java – (SAX Parser)

Let’s start to see a simple DOM parser example.


XML file

<?xml version="1.0"?>
<company>
	<staff>
		<firstname>yong</firstname>
		<lastname>mook kim</lastname>
		<nickname>mkyong</nickname>
		<salary>100000</salary>
	</staff>
	<staff>
		<firstname>low</firstname>
		<lastname>yin fong</lastname>
		<nickname>fong fong</nickname>
		<salary>200000</salary>
	</staff>
</company>


Java Code

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import java.io.File;
 
public class ReadXMLFile {
 
 public static void main(String argv[]) {
 
  try {
	  File fXmlFile = new File("c:\\file.xml");
	  DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
	  DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
	  Document doc = dBuilder.parse(fXmlFile);
	  doc.getDocumentElement().normalize();
 
	  System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
	  NodeList nList = doc.getElementsByTagName("staff");
	  System.out.println("-----------------------");
 
	  for (int temp = 0; temp < nList.getLength(); temp++) {
 
	    Node nNode = nList.item(temp);
 
	    if (nNode.getNodeType() == Node.ELEMENT_NODE) {
 
	      Element eElement = (Element) nNode;
 
	      System.out.println("First Name : "  + getTagValue("firstname",eElement));
	      System.out.println("Last Name : "  + getTagValue("lastname",eElement));
	      System.out.println("Nick Name : "  + getTagValue("nickname",eElement));
	      System.out.println("Salary : "  + getTagValue("salary",eElement));
 
	    }
    }
  } catch (Exception e) {
    e.printStackTrace();
  }
 
 }
 
 private static String getTagValue(String sTag, Element eElement)
 {
	  NodeList nlList= eElement.getElementsByTagName(sTag).item(0).getChildNodes();
	  Node nValue = (Node) nlList.item(0); 
 
	  return nValue.getNodeValue();
 
 }
 
}


Output

Root element :company
-----------------------
First Name : yong
Last Name : mook kim
Nick Name : mkyong
Salary : 100000
First Name : low
Last Name : yin fong
Nick Name : fong fong
Salary : 200000