Reading a XML file

suggest change

In order to load the XML data with XOM you will need to make a Builder from which you can build it into a Document.

Builder builder = new Builder();
Document doc =;

To get the root element, the highest parent in the xml file, you need to use the getRootElement() on the Document instance.

Element root = doc.getRootElement();

Now the Element class has a lot of handy methods that make reading xml really easy. Some of the most useful are listed below:

When you call the getChildElements() you get a Elements instance. From this you can loop through and call the get(int index) method on it to retrieve all the elements inside.

Elements colors = root.getChildElements("color");
for (int q = 0; q < colors.size(); q++){
    Element color = colors.get(q);

Example: Here is an example of reading an XML File:

XML File:

Code for reading and printing it:

import nu.xom.Builder;
import nu.xom.Document;
import nu.xom.Element;
import nu.xom.Elements;
import nu.xom.ParsingException;

public class XMLReader {
    public static void main(String[] args) throws ParsingException, IOException{
        File file = new File("insert path here");
        // builder builds xml data
        Builder builder = new Builder();
        Document doc =;
        // get the root element <example>
        Element root = doc.getRootElement();
        // gets all element with tag <person>
        Elements people = root.getChildElements("person");
        for (int q = 0; q < people.size(); q++){
            // get the current person element
            Element person = people.get(q);
            // get the name element and its children: first and last
            Element nameElement = person.getFirstChildElement("name");
            Element firstNameElement = nameElement.getFirstChildElement("first");
            Element lastNameElement = nameElement.getFirstChildElement("last");
            // get the age element
            Element ageElement = person.getFirstChildElement("age");
            // get the favorite color element
            Element favColorElement = person.getFirstChildElement("fav_color");
            String fName, lName, ageUnit, favColor;
            int age;
            try {
                fName = firstNameElement.getValue();
                lName = lastNameElement.getValue();
                age = Integer.parseInt(ageElement.getValue());
                ageUnit = ageElement.getAttributeValue("unit");
                favColor = favColorElement.getValue();
                System.out.println("Name: " + lName + ", " + fName);
                System.out.println("Age: " + age + " (" + ageUnit + ")");
                System.out.println("Favorite Color: " + favColor);
            } catch (NullPointerException ex){
            } catch (NumberFormatException ex){

This will print out in the console:

Name: Smith, Dan
Age: 23 (years)
Favorite Color: green
Name: Autry, Bob
Age: 3 (months)
Favorite Color: N/A

Feedback about page:

Optional: your email if you want me to get back to you:

Table Of Contents