How to read XML file in Java

written by aext on July 6, 2008 in Tutorials with no comments

This sample code reads the XML file using DOM parser. DOM parser loads the XML file into the memory and makes an object model of it. This Object modal can be traversed to get its elements.

This code will parse the following MyXMLFile.xml file and print its elements to the console.

XML file: MyXMLFile.xml

<?xml version="1.0"?>
<company>
  <employee>
    <firstname>Tom</firstname>
    <lastname>Cruise</lastname>
  </employee>
  <employee>
    <firstname>Paul</firstname>
    <lastname>Enderson</lastname>
  </employee>
  <employee>
    <firstname>George</firstname>
    <lastname>Bush</lastname>
  </employee>
</company>
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class XMLReader {
   public static void main(String argv[]) {
      try {
        File file = new File("c:MyXMLFile.xml");
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document doc = db.parse(file);
        doc.getDocumentElement().normalize();
        System.out.println("Root element " + doc.getDocumentElement().getNodeName());
        NodeList nodeLst = doc.getElementsByTagName("employee");
        System.out.println("Information of all employees");
        for (int s = 0; s < nodeLst.getLength(); s++) {
           Node fstNode = nodeLst.item(s);
          if (fstNode.getNodeType() == Node.ELEMENT_NODE) {
              Element fstElmnt = (Element) fstNode;
              NodeList fstNmElmntLst = fstElmnt.getElementsByTagName("firstname");
              Element fstNmElmnt = (Element) fstNmElmntLst.item(0);
              NodeList fstNm = fstNmElmnt.getChildNodes();
              System.out.println("First Name : " + ((Node) fstNm.item(0)).getNodeValue());
              NodeList lstNmElmntLst = fstElmnt.getElementsByTagName("lastname");
              Element lstNmElmnt = (Element) lstNmElmntLst.item(0);
              NodeList lstNm = lstNmElmnt.getChildNodes();
              System.out.println("Last Name : " + ((Node) lstNm.item(0)).getNodeValue());
           }
        }
     } catch (Exception e) {
        e.printStackTrace();
     }
   }
}