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:
- Create an object of javax.xml.parsers.DocumentBuilderFactory the java core inbuilt XML parser.
- Create an object of javax.xml.parsers.DocumentBuilder
- Now, Create the org.w3c.dom.Document object
- Get the node list using: document.getElementsByTagName("tag-name-here")
- 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).
More Posts related to Java,
- Get the current timestamp in Java
- Java Stream with Multiple Filters Example
- Java SE JDBC with Prepared Statement Parameterized Select Example
- Fix: UnsupportedClassVersionError: Unsupported major.minor version 63.0
- [Fix] Java Exception with Lambda - Cannot invoke because object is null
- 7 deadly java.lang.OutOfMemoryError in Java Programming
- How to Calculate the SHA Hash Value of a File in Java
- Java JDBC Connection with Database using SSL (https) URL
- How to Add/Subtract Days to the Current Date in Java
- Create Nested Directories using Java Code
- Spring Boot: JDBCTemplate BatchUpdate Update Query Example
- What is CA FE BA BE 00 00 00 3D in Java Class Bytecode
- Save Java Object as JSON file using Jackson Library
- Adding Custom ASCII Text Banner in Spring Boot Application
- [Fix] Java: Type argument cannot be of primitive type generics
- List of New Features in Java 11 (JEPs)
- Java: How to Add two Maps with example
- Java JDBC Transition Management using PreparedStatement Examples
- Understanding and Handling NullPointerException in Java: Tips and Tricks for Effective Debugging
- Steps of working with Stored Procedures using JDBCTemplate Spring Boot
- Java 8 java.util.Function and BiFunction Examples
- The Motivation Behind Generics in Java Programming
- Get Current Local Date and Time using Java 8 DateTime API
- Java: Convert Char to ASCII
- Deep Dive: Why avoid java.util.Date and Calendar Classes
More Posts:
- Android Emulator] ##KBD: Full queue, lose event Error Logs - Android
- Install Jupyter Notebook without Anaconda on Mac - MacOS
- How to minimize all Windows in Mac - MacOS
- How to Change Mouse Wheel Scroll Direction on Mac - MacOS
- Notepad++ delete lines above or below - NotepadPlusPlus
- Online UUID Generator Tool - Tools
- Java: Fix SAXParseException: :1:1: Content is not allowed in prolog. - Java
- Java JDBC Example with Oracle Database Driver Connection - Java