How to Retrieve XML Child Nodes in Java

When working with XML in Java, handling and processing child nodes is a common requirement, especially when dealing with complex hierarchical data. Java provides powerful libraries like Java DOM (Document Object Model) API to parse and retrieve XML nodes efficiently. This post will guide you through the process of retrieving XML child nodes using the DOM parser.


Table of Contents

  1. Understanding XML Structure
  2. Parsing XML Using DOM
  3. Retrieving Child Nodes
  4. Example Code
  5. Conclusion

1. Understanding XML Structure

Consider the following sample XML structure:

<company>

    <employee id="1">

        <name>John Doe</name>

        <designation>Software Engineer</designation>

        <department>IT</department>

    </employee>

    <employee id="2">

        <name>Jane Smith</name>

        <designation>QA Analyst</designation>

        <department>Quality Assurance</department>

    </employee>

</company>

Here, the <employee> elements are child nodes of <company>, and <name>, <designation>, and <department> are child nodes of each <employee>.


2. Parsing XML Using DOM

Steps to Parse XML:

  1. Load the XML file or string into a DOM Document.
  2. Use the DocumentBuilderFactory and DocumentBuilder to parse the XML.
  3. Retrieve elements and their child nodes using DOM methods.

3. Retrieving Child Nodes

DOM provides methods like:

  • getChildNodes(): Retrieves all child nodes, including element, text, and comment nodes.
  • getElementsByTagName(): Retrieves all elements with a specified tag name.

Key Node Types:

  • Node.ELEMENT_NODE: Represents element nodes like <employee>.
  • Node.TEXT_NODE: Represents text content between elements.

To filter specific child nodes, check the NodeType of each node.


4. Example Code

Here's an example to retrieve and print child nodes of the <employee> element:

import org.w3c.dom.*;

import javax.xml.parsers.*;


import java.io.File;


public class XMLChildNodeRetriever {


    public static void main(String[] args) {

        try {

            // Load and parse the XML file

            File xmlFile = new File("company.xml");

            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

            DocumentBuilder builder = factory.newDocumentBuilder();

            Document document = builder.parse(xmlFile);


            // Normalize the document

            document.getDocumentElement().normalize();


            // Get all <employee> elements

            NodeList employeeList = document.getElementsByTagName("employee");


            // Iterate through each <employee>

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

                Node employeeNode = employeeList.item(i);


                if (employeeNode.getNodeType() == Node.ELEMENT_NODE) {

                    Element employeeElement = (Element) employeeNode;

                    System.out.println("Employee ID: " + employeeElement.getAttribute("id"));


                    // Retrieve and iterate over child nodes of <employee>

                    NodeList childNodes = employeeElement.getChildNodes();

                    for (int j = 0; j < childNodes.getLength(); j++) {

                        Node childNode = childNodes.item(j);


                        // Check if it's an element node

                        if (childNode.getNodeType() == Node.ELEMENT_NODE) {

                            Element childElement = (Element) childNode;

                            System.out.println(childElement.getTagName() + ": " + childElement.getTextContent());

                        }

                    }

                    System.out.println("---------------------");

                }

            }

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

}

Output:

For the given XML, the output will be:

Employee ID: 1

name: John Doe

designation: Software Engineer

department: IT

---------------------

Employee ID: 2

name: Jane Smith

designation: QA Analyst

department: Quality Assurance

---------------------

Followers