Monday, May 15, 2023

How to Parse or Read XML File in Java>> XML Tutorial Example

(追記) (追記ここまで)
How to parse xml files in Java or how to read xml files in java is one of common need of a Java Developer working with an enterprise Java application which uses XML for data representation, messaging, and data transfer. Java has good support to handle XML files and XML Documents and you can read XML Files in Java, create or write to XML file in Java by using various XML parsers available. Reading XML file is a little bit different than reading text or binary files in Java but it uses the same concept of File class.


Universal acceptability of XML and Java has helped them to grow together and they have a lot of things common in between just like Java is platform independence, XML provides data that is also platform-independent. You can use XML to transfer data between a legacy application written in C or C++ and Java.


What is important to work with XML in Java is the correct understanding of XML Parser, Basic knowledge of XML documents, etc. In this Java XML Tutorial, we will see how to parse an XML File by using both DOM XML Parser.

We will also see the difference between DOM and SAX parser in XML and other basics related to XML parsing in Java. I thought about this article after sharing my XPath notes in Java.





How to read XML File in Java

Here are a couple of ways to parse an XML file in Java. You will learn how to use JAXP and DOM parser to load the XML file in Java

1. JAXP - Java API for XML Parsing

Java provides extensive support for reading XML file, writing XML file and accessing any element from XML file. All XML parsing related classes and methods are inside JAXP. Though DOM related code comes from org.w3c.dompackage. All XML parsers are in javax.xml.parsers package.we will see example of parsing xml files using JAXP API in next section.


(追記) (追記ここまで)

2. Parse XML File in Java using DOM Parser

In this section, we will see how to parse xml files or how to read xml file using DOM XML Parser.DOM is a quick and easy way to parse xml files in Java and if you are doing it for testing its way to go.

The only thing to concern is that XML files that need to be parsed must not be too large. You can also create xml file by using DOM parser and DocumentFactory Class in Java.

XML file for parsing in Java
Here is xml file Stocks.xml which contains some stocks and there price, quantity we will use this in our xml parsing example in Java.

<?xml version="1.0" encoding="UTF-8"?>
<stocks>
<stock>
<symbol>Citibank</symbol>
<price>100</price>
<quantity>1000</quantity>
</stock>
<stock>
<symbol>Axis bank</symbol>
<price>90</price>
<quantity>2000</quantity>
</stock>
</stocks>


3. Code Example of Parsing XML File in Java using DOM Parser

how to read or parse xml file in java Here is a code example of parsing above xml file in Java using DOM parser:


import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

publicclass DOMExampleJava {

publicstaticvoid main(String args[]) {
try {

File stocks = new File("Stocks.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(stocks);
doc.getDocumentElement().normalize();

System.out.println("root of xml file" + doc.getDocumentElement().getNodeName());
NodeList nodes = doc.getElementsByTagName("stock");
System.out.println("==========================");

for (int i = 0; i < nodes.getLength(); i++) {
Node node = nodes.item(i);

if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node;
System.out.println("Stock Symbol: " + getValue("symbol", element));
System.out.println("Stock Price: " + getValue("price", element));
System.out.println("Stock Quantity: " + getValue("quantity", element));
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
}

privatestatic String getValue(String tag, Element element) {
NodeList nodes = element.getElementsByTagName(tag).item(0).getChildNodes();
Node node = (Node) nodes.item(0);
return node.getNodeValue();
}
}

Output:

root of xml file stocks
==========================
Stock Symbol: Citibank
Stock Price: 100
Stock Quantity: 1000
Stock Symbol: Axis bank
Stock Price: 90
Stock Quantity: 2000


That’s all on xml parsing in java for now. We have seen how to read and write xml files in Java and are now familiar with both DOM and SAX Parser in java. We will see more on xml in the coming days like reading xml elements via XPath and using xml beans etc. let me know if you have any doubt on xml parsing examples or in general with xml and Java.


Related Java Tutorials

(追記) (追記ここまで)

21 comments :

Anonymous said...

Hi,
I really liked your post, can you please cover something about JAXB, XStream, Jibx also, it will be very useful

December 28, 2011 at 7:09 PM
Javin @ polymorphism in java said...

Thanks Anonymous, I would definitely try to cover more about JAXB, Xstream, Xerces etc.

December 29, 2011 at 4:13 AM
daticon said...

Tried a bunch of .java files for parsing my XML file. This was the only one that worked, and it was the shortest as well. Thanks!

January 26, 2012 at 5:18 AM
Anonymous said...

Thnks Man :)

This is very helpful THANK U VERY MUCH

I have a request can u plz write article on "web services" that will b a great help

again thanks man

February 24, 2012 at 2:20 AM
Javin @ loop java hashmap said...

@Anonymous, Thanks glad to hear that your like this Java XML tutorial on reading XML files. Sure, I will definitely try to write article on web services. by the way I have shared some web services Interview question on REST, you may find useful: REST and SOAP web service Interview Questions Answers

February 24, 2012 at 7:19 AM
Sudhakar said...

I was looking for a Simple Java program to read XML file which should be capable to read real world practical xml file, validate xml files against provided XSD or DTD etc. I can still use your Java program for first part just reading xml files but I am not sure how to validate XML files against XSD or DTD. Can you please help.

April 18, 2012 at 7:58 PM
Ravi said...

You can also use XML beans to read from XML File. xml beans are much simpler and provide more control. you just need an XSD file (XML Schema file), compile that schema and XML Bean compiler will generate classes which can than be used to read any content, element from XML file, update elements in XML and remove stuff from XML documents.

May 23, 2012 at 12:03 AM
Anonymous said...

check out vtd-xml its a relatively new technology of parsing xml files and much faster than conventional DOM and SAX parser.

May 30, 2012 at 2:17 AM
Anonymous said...

you can also use JDOM parser for parsing xml files, its much better than DOM and SAX parsers.

June 19, 2012 at 2:55 AM
Anonymous said...

thank you this very helpful for me,
but can you tell me about FACTORY CLASS and SaxParserFactory class in java?

November 15, 2012 at 6:01 AM
Erieze said...

This helps a lot! Thank! :)

By the way, is there a way to write data into XML file using Java as PL?

December 27, 2012 at 6:02 AM
javin paul said...

@Erieze, You can also modify or write data into XML using DOM or SAX parser, better way is to use XML Binding to Java objects for modifying XML documents form Java programming language. Open source library XML Beans or JAXB can be used to bind XML document to Java objects.

December 27, 2012 at 6:56 AM
Unknown said...

hi i am new to java, and using this in android,
No such file or directory error comming. Please let me know where to save stocks.xml

January 31, 2013 at 12:14 AM
Anonymous said...

it is working fine in notepad+ but when i try to use the above 2 program in eclipse it is giving me an error. i have placed .xml file under the src folder and .java file under the package which is under the src folder again

March 28, 2013 at 3:30 AM
Javin @ xml interview questions said...

@Anonymous, What error are you getting? Can you please post it here, must be related to classpath. I suggest try putting .xml file under project directory, just one level above src folder.

March 28, 2013 at 6:57 PM
Anonymous said...

How do i put the xml file above the src folder?

July 19, 2013 at 4:19 AM
Deepak Jindal said...

Sir am wrking in jsp make xml file and after that i update node in xml file then it come on jsp page but chages reflect on jsp page after some time why?

September 9, 2013 at 10:04 AM
Unknown said...

Use this to save ur xml file : File stocks = new File("d:/stocks.xml");

October 28, 2013 at 10:27 PM
Anonymous said...

If you have a node empty, for example: don't run.
Fix:
private static String getValue(String tag, Element element) {
NodeList nodes = element.getElementsByTagName(tag).item(0).getChildNodes();
if (nodes.getLength()==0) {
return "";
}
else {
Node node = (Node) nodes.item(0);
return node.getNodeValue();
}
}



November 9, 2014 at 4:11 AM
Gurumoorthy said...

I am getting Red Lines
DocumentBuilder db = factory.newDocumentBuilder();
can u help

November 23, 2015 at 7:00 PM
Unknown said...

hi, how would i get the inner text of this xml document

"


634.0
12.0
2670.0
3/31/2016 12:00:00 AM
8/31/2018 12:00:00 AM
1350.0
00

"

your assistance would be highly appreciated

February 11, 2016 at 3:11 AM

Post a Comment

[フレーム]

AltStyle によって変換されたページ (->オリジナル) /