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).

Advertisements
Try Out Code2care Dev Tools:

Advertisements



Android Java Linux Microsoft Google Python macOS Notepad++ Microsoft Teams CSS PHP SharePoint Html Linux C Programs Bootstrap jQuery Sublime Android Studio Facebook Eclipse WhatsApp News MySQL Json HowTos JavaScript FTP S3


Advertisements


Code2care is an initiative to publish and share varied knowledge in programming and technical areas gathered during day-to-day learnings and development activities.

Students and Software Developers can leverage this portal to find solutions to their various queries without re-inventing the wheel by referring to our easy to understand posts. Technical posts might include Learnings, Tutorials, Trouble-Shooting steps, Video Tutorials, Code Snippets, How Tos, Blogs, Articles, etc.
🎉 We are celebrating the 10th years of Code2care! Thank you for all your support! We hope we made a difference.
We strong support Gender Equality & Diversity.

We stand in solidarity with Ukraine - Make a donation to UNHCR - https://donate.unhcr.org/in/en-in/ukraine-emergency