import java.io.File;import java.io.FileInputStream; import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.xpath.XPath;import javax.xml.xpath.XPathConstants;import javax.xml.xpath.XPathFactory; import org.w3c.dom.Document;import org.w3c.dom.Node;import org.w3c.dom.NodeList; public class FindElementsByAbsoluteLocationWithXPath {     public static void main(String[] args) throws Exception {         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();        dbf.setValidating(false);        DocumentBuilder db = dbf.newDocumentBuilder();         Document doc = db.parse(new FileInputStream(new File("in.xml")));         XPathFactory factory = XPathFactory.newInstance();         XPath xpath = factory.newXPath();         String expression;        Node node;        NodeList nodeList;         // 1. root element        expression = "/*";        node = (Node) xpath.evaluate(expression, doc, XPathConstants.NODE);        System.out.println("1. " + node.getNodeName());         // 2. root element (by name)        expression = "/rss";        node = (Node) xpath.evaluate(expression, doc, XPathConstants.NODE);        System.out.println("2. " + node.getNodeName());         // 3. element under rss        expression = "/rss/channel";        node = (Node) xpath.evaluate(expression, doc, XPathConstants.NODE);        System.out.println("3. " + node.getNodeName());         // 4. all elements under rss/channel        expression = "/rss/channel/*";        nodeList = (NodeList) xpath.evaluate(expression, doc, XPathConstants.NODESET);        System.out.print("4. ");        for (int i = 0; i < nodeList.getLength(); i++) {            System.out.print(nodeList.item(i).getNodeName() + " ");        }        System.out.println();         // 5. all title elements in the document        expression = "//title";        nodeList = (NodeList) xpath.evaluate(expression, doc, XPathConstants.NODESET);        System.out.print("5. ");        for (int i = 0; i < nodeList.getLength(); i++) {            System.out.print(nodeList.item(i).getNodeName() + " ");        }        System.out.println();         // 6. all elements in the document except title        expression = "//*[name() != 'title']";        nodeList = (NodeList) xpath.evaluate(expression, doc, XPathConstants.NODESET);        System.out.print("6. ");        for (int i = 0; i < nodeList.getLength(); i++) {            System.out.print(nodeList.item(i).getNodeName() + " ");        }        System.out.println();         // 7. all elements with at least one child element        expression = "//*[*]";        nodeList = (NodeList) xpath.evaluate(expression, doc, XPathConstants.NODESET);        System.out.print("7. ");        for (int i = 0; i < nodeList.getLength(); i++) {            System.out.print(nodeList.item(i).getNodeName() + " ");        }        System.out.println();         // 8. all level-5 elements (the root being at level 1)        expression = "/*/*/*/*";        nodeList = (NodeList) xpath.evaluate(expression, doc, XPathConstants.NODESET);        System.out.print("8. ");        for (int i = 0; i < nodeList.getLength(); i++) {            System.out.print(nodeList.item(i).getNodeName() + " ");        }        System.out.println();     } }

Input:

<?xml version="1.0" encoding="UTF-8"?><rss version="2.0">    <channel>        <title>Java Tutorials and Examples 2</title>        <language>en-us</language>        <item>            <title><![CDATA[Java Tutorials 2]]></title>            <link>http://www.javacodegeeks.com/</link>        </item>        <item>            <title><![CDATA[Java Examples 2]]></title>            <link>http://examples.javacodegeeks.com/</link>        </item>    </channel></rss>

输出:

1. rss2. rss3. channel4. title language item item5. title title title6. rss channel language item link item link7. rss channel item item8. title link title link

更多相关文章

  1. 字体图标的引入和通过媒体查询改变导航样式
  2. HTML样式和常用选择器
  3. 字体图标的引用和自定义样式/媒体查询的使用
  4. 数据库的CURD操作、PDO本质与原理的学习
  5. CSS之伪类选择器和简单盒子简单案例
  6. 伪类选择器与盒模型常用属性
  7. 伪类选择器-结构伪类、根据位置选择匹配
  8. 7.4——常用标签与应用场景之表格与单元格
  9. css伪类选择器和盒模型

随机推荐

  1. ThinkPHP的create方法的一系列操作
  2. PHP不区分大小写数组搜索函数[duplicate]
  3. PHP是否以不同方式(内部)处理数字索引数组?
  4. php中的PCRE 函数,正则表达式处理函数。
  5. 将SQL查询的SELECT子句解析为PHP数组
  6. php 模板框架之smarty 的下载和安装
  7. 编译php时遇到的错误
  8. Doctrine 2.0 entitymanager-> replace()等
  9. PHP和MySQL应用实战
  10. phpmyadmin表前出现红色感叹号