input.xml
refre to:lautturi.com<?xml version="1.0"?> <catalog> <book id="bk101"> <author>Gambardella, Matthew</author> <title>XML Developer's Guide</title> <genre>Computer</genre> <price>44.95</price> <publish_date>2000-10-01</publish_date> <description>An in-depth look at creating applications with XML.</description> </book> <book id="bk102"> <author>Ralls, Kim</author> <title>Midnight Rain</title> <genre>Fantasy</genre> <price>5.95</price> <publish_date>2000-12-16</publish_date> <description>A former architect battles corporate zombies, an evil sorceress, and her own childhood to become queen of the world.</description> </book> <book id="bk103"> <author>Corets, Eva</author> <title>Maeve Ascendant</title> <genre>Fantasy</genre> <price>5.95</price> <publish_date>2000-11-17</publish_date> <description>After the collapse of a nanotechnology society in England, the young survivors lay the foundation for a new society.</description> </book> </catalog>
get all leaf nodes from xml file in java:
/** * @author lautturi.com * Java example:parsing xml file in java */ import java.util.*; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpression; import javax.xml.xpath.XPathFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; public class Lautturi { public static void main(String[] args) { try { final Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse("input.xml"); final XPathExpression xpath = XPathFactory.newInstance().newXPath().compile("//*[count(./*) = 0]"); final NodeList nodeList = (NodeList) xpath.evaluate(doc, XPathConstants.NODESET); for (int i = 0; i < nodeList.getLength(); i++) { final Element el = (Element) nodeList.item(i); System.out.println(el.getNodeName()); } } catch (Exception e) { e.printStackTrace(); } } }
output:
author title genre price publish_date description author title genre price publish_date description author title genre price publish_date description