LAST UPDATED: AUGUST 5, 2021
How to read XML file in Java
In this post, we are going to learn to read an XML file using the Java code. The XML is an Extensible Markup Language document file that is used to store and transport data.
Java provides an XML parser library to read the XML document. So, we must import these libraries before writing code to read the file.
Here, we are using a sample XML file students.xml that contains some data and we will read that using the Java code.
// students.xml
<students>
<student id="101">
<Name>John</Name>
<id>11001</id>
<location>India</location>
</student>
<student id="102">
<Name>Alex</Name>
<id>11002</id>
<location>Russia</location>
</student>
<student id="103">
<Name>Rohan</Name>
<id>11003</id>
<location>USA</location>
</student>
</students>
Time for an Example:
Let's create an example to read an XML file. Here, first we created an instance of doucment and then parse it to read the file. The getDocumentElement()
method is used to read the root element and then by using the loop we iterate all the tags of the document.
package myjavaproject;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
import javax.xml.parsers.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException, ParserConfigurationException, SAXException{
DocumentBuilderFactory dBfactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dBfactory.newDocumentBuilder();
// Fetch XML File
Document document = builder.parse(new File("students.xml"));
document.getDocumentElement().normalize();
//Get root node
Element root = document.getDocumentElement();
System.out.println(root.getNodeName());
//Get all students
NodeList nList = document.getElementsByTagName("student");
System.out.println(".................................");
for (int i = 0; i < nList.getLength(); i++)
{
Node node = nList.item(i);
System.out.println(); //Just a separator
if (node.getNodeType() == Node.ELEMENT_NODE)
{
//Print each student's detail
Element element = (Element) node;
System.out.println("Student id : " + element.getAttribute("id"));
System.out.println("Name : " + element.getElementsByTagName("Name").item(0).getTextContent());
System.out.println("Roll No : " + element.getElementsByTagName("id").item(0).getTextContent());
System.out.println("Location : " + element.getElementsByTagName("location").item(0).getTextContent());
}
}
}
}
students
.................................
Student id : 101
Name : John
Roll No : 11001
Location : India
Student id : 102
Name : Alex
Roll No : 11002
Location : Russia
Student id : 103
Name : Rohan
Roll No : 11003
Location : USA
Live Example:
You can test this Java code using the Online Java Compiler. Here, we have attached an XML file to read the data.