DocumentBuilderDocumentBuilderFactory
Count XML Elements in Java using DOM parser example
In this example we are going to see how to count elements with specific tag names using a DOM parser in Java.
Basically all you have to do in order to count elements in an XML elements is:
- Open and parse an XML Document using a
DocumentBuilder
- Use
Document.getElementsByTagName
that will return a list with nodes. - Simply print out the length of the above list using
getLength
method.
Here is the XML file we are going to use as an input:
testFile.xml:
<?xml version="1.0" encoding="UTF-8" standalone="no"?><company> <employee id="10"> <lastname>Harley</lastname> <email>james@example.org</email> <department>Human Resources</department> <salary>2000000</salary> <address>34 Stanley St.</address> </employee> <employee id="2"> <firstname>John</firstname> <lastname>May</lastname> <email>john@example.org</email> <department>Logistics</department> <salary>400</salary> </employee> </company>
Let’s take a look at the code:
CountXMLElementJava.java:
package com.javacodegeeks.java.core; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; public class CountXMLElementJava { private static final String xmlfilepath = "C:\\Users\\nikos7\\Desktop\\filesForExamples\\testFile.xml"; public static void main(String argv[]) { try { DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document document = documentBuilder.parse(xmlfilepath); NodeList nodeList = document.getElementsByTagName("employee"); System.out.println("Number of elements with tag name employee : " + nodeList.getLength()); } catch (ParserConfigurationException pce) { pce.printStackTrace(); } catch (IOException ioe) { ioe.printStackTrace(); } catch (SAXException sae) { sae.printStackTrace(); } } }
Output:
Number of elements with tag name employee : 2