如何使用XPath提取xml文档数据

本文实例为大家分享了XPath提取xml文档数据具体代码,供大家参考,具体内容如下

import java.util.List;

import org.dom4j.Document;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import org.junit.Test;
/*
 * 使用XPath查找xml文档数据
 *
 */
public class DemoXPath {
  @Test
  //输出book.xml中所有price元素节点的文本值
  public void test1() throws Exception {
    SAXReader reader = new SAXReader();
    Document document = reader.read("src/main/java/book.xml");
    List<? extends Node> selectNodes = document.selectNodes("//price");
    for(Node node : selectNodes) {
      String text = node.getText();
      System.out.println(text);
    }
  }

  @Test
  //输出book.xml中第二本书的price元素节点的文本值
  public void test2() throws Exception {
    SAXReader reader = new SAXReader();
    Document document = reader.read("src/main/java/book.xml");
    Node selectSingleNode = document.selectSingleNode("/bookshelf/book[2]/price");
    String text = selectSingleNode.getText();
    System.out.println(text);
  }

  @Test
  //输出book.xml中第二本书和第三本书的author元素节点的文本值
  public void test3() throws Exception {
    SAXReader reader = new SAXReader();
    Document document = reader.read("src/main/java/book.xml");
    List<? extends Node> selectSingleNode = document.selectNodes("/bookshelf/book[position()>1]/author");
    for (Node node : selectSingleNode) {
      String text = node.getText();
      System.out.println(text);
    }
  }

  @Test
  //输出book.xml中含有属性id的所有name的文本值
  public void test4() throws Exception {
    SAXReader reader = new SAXReader();
    Document document = reader.read("src/main/java/book.xml");
    List<? extends Node> selectSingleNode = document.selectNodes("//name[@id]");
    for (Node node : selectSingleNode) {
      String text = node.getText();
      System.out.println(text);
    }
  }

  @Test
  //输出book.xml中含有属性id="1111"的name的文本值
  public void test5() throws Exception {
    SAXReader reader = new SAXReader();
    Document document = reader.read("src/main/java/book.xml");
    Node selectSingleNode = document.selectSingleNode("//name[@id=\"1111\"]");
    String text = selectSingleNode.getText();
    System.out.println(text);
  }

  @Test
  //输出book.xml中含有属性id="1112"的book的author的文本值
  public void test6() throws Exception {
    SAXReader reader = new SAXReader();
    Document document = reader.read("src/main/java/book.xml");
    Node selectSingleNode = document.selectSingleNode("//book[name[@id=\"1112\"]]/author");
    String text = selectSingleNode.getText();
    System.out.println(text);
  }

  @Test
  //输出book.xml中第一本book的id的属性值
  public void test7() throws Exception {
    SAXReader reader = new SAXReader();
    Document document = reader.read("src/main/java/book.xml");
    Node selectSingleNode = document.selectSingleNode("//book[1]/name");
    String text = selectSingleNode.valueOf("attribute::id");//获取id属性
    System.out.println(text);
  }

  @Test
  //输出book.xml中book的name的id的属性值为1112的对应的sn的属性值
  public void test8() throws Exception {
    SAXReader reader = new SAXReader();
    Document document = reader.read("src/main/java/book.xml");
    List<? extends Node> selectNodes = document.selectNodes("//book/name");
    for (Node node : selectNodes) {
      if(node.valueOf("attribute::id").equals("1112")) {
        System.out.println(node.valueOf("attribute::sn"));
      }
    }
  }
}
 <dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <version>4.11</version>
  </dependency>
  <dependency>
   <groupId>log4j</groupId>
   <artifactId>log4j</artifactId>
   <version>1.2.17</version>
  </dependency>
  <dependency>
   <groupId>dom4j</groupId>
   <artifactId>dom4j</artifactId>
  </dependency>
<dependency>
 <groupId>jaxen</groupId>
 <artifactId>jaxen</artifactId>
 <version>1.1.6</version>
</dependency>
 <?xml version="1.0" encoding="utf-8"?>

<bookshelf>
 <book>
  <name id="1111" sn="sdd8">Tomorrow</name>
  <author>Hiskell</author>
  <price>$40</price>
 </book>
 <book>
  <name id="1112" sn="sdd9">Goodbye to You</name>
  <author>Giddle</author>
  <price>$25</price>
 </book>
 <book>
  <name id="1113" sn="sdd0">Sea and Old</name>
  <author>Heminw</author>
  <price>$28</price>
 </book>
</bookshelf>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java使用xpath和dom4j解析xml

    1 XML文件解析的4种方法 通常解析XML文件有四种经典的方法.基本的解析方式有两种,一种叫SAX,另一种叫DOM.SAX是基于事件流的解析,DOM是基于XML文档树结构的解析.在此基础上,为了减少DOM.SAX的编码量,出现了JDOM,其优点是,20-80原则(帕累托法则),极大减少了代码量.通常情况下JDOM使用时满足要实现的功能简单,如解析.创建等要求.但在底层,JDOM还是使用SAX(最常用).DOM.Xanan文档.另外一种是DOM4J,是一个非常非常优秀的Java XML API,

  • Java通过XPath获取XML文件中符合特定条件的节点

    在Java解析XML文件的过程中,有时需要获取符合某些特定条件的节点,以下是实现代码. import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; import org.eclipse.swt.widgets.Shell; import org.ec

  • java使用xpath解析xml示例分享

    XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言.XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力.起初 XPath 的提出的初衷是将其作为一个通用的.介于XPointer与XSL间的语法模型.但是 XPath 很快的被开发者采用来当作小型查询语言. XPathTest.java 复制代码 代码如下: package com.hongyuan.test; import java.io.File;import java

  • 如何使用XPath提取xml文档数据

    本文实例为大家分享了XPath提取xml文档数据具体代码,供大家参考,具体内容如下 import java.util.List; import org.dom4j.Document; import org.dom4j.Node; import org.dom4j.io.SAXReader; import org.junit.Test; /* * 使用XPath查找xml文档数据 * */ public class DemoXPath { @Test //输出book.xml中所有price元素节

  • JS实现兼容各浏览器解析XML文档数据的方法

    本文实例讲述了JS实现兼容各浏览器解析XML文档数据的方法.分享给大家供大家参考.具体分析如下: 网站上很多用JS解析XML文档的资料或多或少都有点问题, 以下是自己总结的代码,用来解析XML文档,兼容各个浏览器. parseXMLDOM.js代码: /* * 纯JS解析XML文档(兼容各个浏览器) */ function parseXMLDOM(){ var _browserType = ""; var _xmlFile = ""; var _XmlDom = n

  • java + dom4j.jar提取xml文档内容

    本文实例为大家分享了java + dom4j.jar提取xml文档内容的具体代码,供大家参考,具体内容如下 资源下载页:点击下载 本例程主要借助几个遍历的操作对xml格式下的内容进行提取,操作不是最优的方法,主要是练习使用几个遍历操作. xml格式文档内容: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE nitf SYSTEM "http://www.nitf.org/IPTC/NITF

  • 比较完整简洁的Flash处理XML文档数据教程 上篇第1/3页

    准备:首先你得有台电脑,其次是要装上Windows系统和Flash8. XML基础: 既然是处理XML文档,就要先来了解下XML文档.下面是我所了解的,有些是在Flash中用不到的. XML扩展标记语言(Extensible Markup Language)是SGML(Structured Generalized Markup Language)的子集,由World Wide Web Consortium(W3C)的XML工作组定义. 下面开始了解XML的结构.XML是由序言和文档元素组成的.

  • 完整简洁 Flash 处理XML 文档数据 教程 下篇

    实例4: 利用List组件做个mp3播放列表. 新建一个xml文档,在记事本中输入下面的代码,然后保存为 xml-004.xml. 复制代码 代码如下: <?xml version="1.0" encoding="gb2312"?>  <mp3List>      <mp3 path="jmzcg.mp3">阿桑-寂寞在唱歌</mp3>      <mp3 path="jmjywsl

  • java将XML文档转换成json格式数据的示例

    本文介绍了java将XML文档转换成json格式数据的示例,分享给大家,具体如下: 功能 将xml文档转换成json格式数据 说明 依赖包: 1. jdom-2.0.2.jar : xml解析工具包; 2. fastjson-1.1.36.jar : 阿里巴巴研发的高性能json工具包 程序源代码 package com.xxx.open.pay.util; import com.alibaba.fastjson.JSONObject; import org.jdom2.Element; imp

  • Python数据存储之XML文档和字典的互转

    目录 面试题 解析 总结 考点: 将字典转换为XML文档: 将XML文档转换为字典. 面试题 1.面试题一:如何将一个字典转换为XML文档,并将该XML文档保存为文本文件. 2.面试题二:如何读取XML文件的内容,并将其转换为字典. 解析 如何将一个字典转换为XML文档,并将该XML文档保存为文本文件: 这里需要用到第三方库:dicttoxml.需要安装一下 # coding=utf-8 import dicttoxml from xml.dom.minidom import parseStri

  • java使用DOM对XML文档进行增删改查操作实例代码

    本文研究的主要是java使用DOM对XML文档进行增删改查操作的相关代码,具体实例如下所示. 源代码: package com.zc.homeWork18; import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Transformer; import javax.xml.tr

  • PHP4和PHP5版本下解析XML文档的操作方法实例分析

    本文实例讲述了PHP4和PHP5版本下解析XML文档的操作方法.分享给大家供大家参考,具体如下: 在PHP网站开发与建设过程中,时常会碰到需要对XML文档进行解析,PHP4版本自带了XML解析器(sax),PHP5版本增加了SimpleXML(基于dom)的XML扩展,对XML的解析更是非常方便,今天和大家分享下在不同环境下对XML文档进行解析的方法. XML文档 <?xml version="1.0" encoding="gbk"?> <Leap

  • XML文档搜索使用小结

    大家在.NET中处理XML文档的时候,经常会需要找到文档中的某个节点的数据.要找到某个节点,有许多种方法,在这里我就把几种常用的方法给大家总结一下. 首先,我们要做的是要把一个XML文档装入到一个XmlDocument对象中去. 先引用几个名字空间: using System.Xml;   using System.Xml.Xsl;   using System.Xml.XPath; 这几个名字空间大家根据名字就知道它的意思了,我就不在这儿多说了.然后就是装入XML文件的代码,方法如下: Str

随机推荐