Parse XML file in Java using DOM Parser


Java Parse File using DOM Parser

In this example, we will parse an XML file using the Java inbuilt DOM (Document Object Model) parser.

Sample XML file:
<?xml version="1.0" encoding="UTF-8"?>
<students>
  <student>
    <Id>1</Id>
    <Name>Sam</Name>
    <Age>20</Age>
  </student>
  <student>
    <Id>2</Id>
    <Name>Rita</Name>
    <Age>22</Age>
  </student>
  <student>
    <Id>3</Id>
    <Name>Mike</Name>
    <Age>23</Age>
  </student>
  <student>
    <Id>4</Id>
    <Name>Alex</Name>
    <Age>21</Age>
  </student>
</students>
Java Code:

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.File;
import java.io.IOException;

/**
 * 
 * Code2care Java Programs
 * 
 * This program demonstrates how to parse an
 * XML file using Dom Parser.
 * 
 */
public class JavaDomParserExample {

    public static void main(String[] args) throws ParserConfigurationException, IOException, SAXException {

        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
        Document document = documentBuilder.parse(new File("/Users/code2care/IdeaProjects/plan/src/sample.xml"));

        String rootNode = document.getDocumentElement().getNodeName();
        NodeList studentsList = document.getElementsByTagName("student");

        for (int i = 0; i < studentsList.getLength(); i++) {

            Element student = (Element) studentsList.item(i);
            String id = student.getElementsByTagName("Id").item(0).getTextContent();
            String name = student.getElementsByTagName("Name").item(0).getTextContent();
            String age = student.getElementsByTagName("Age").item(0).getTextContent();

            System.out.println(rootNode + " record : " +( i + 1));
            System.out.println("Id: " + id);
            System.out.println("Name: " + name);
            System.out.println("Age: " + age);
            System.out.println("--------------");
        }
    }
}
Output:
students record: 1
Id: 1
Name: Sam
Age: 20
--------------
students record: 2
Id: 2
Name: Rita
Age: 22
--------------
students record: 3
Id: 3
Name: Mike
Age: 23
--------------
students record: 4
Id: 4
Name: Alex
Age: 21
--------------
Steps:
  1. Create an object of javax.xml.parsers.DocumentBuilderFactory the java core inbuilt XML parser.
  2. Create an object of javax.xml.parsers.DocumentBuilder
  3. Now, Create the org.w3c.dom.Document object
  4. Get the node list using: document.getElementsByTagName("tag-name-here")
  5. Iterate over the NodeList and get access to the elements of the xml file.

Note: DOM Parser will load the whole of the XML file in memory, so if the XML file is too huge you should avoid using DOM parser and instead use a SAX parser to avoid OOM (Out of Memory Errors).


Topics Coverage:


🎉 We are celebrating the 10th years of Code2care! Thank you for all your support!

We strongly support Gender Equality & Diversity.

Follow Us: GitHub | Facebook | Twitter | Instagram