`
m635674608
  • 浏览: 5028379 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

使用XPath提取xml文档数据

    博客分类:
  • java
 
阅读更多
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>

 

分享到:
评论

相关推荐

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

    在本文中,我们将详细介绍如何使用XPath提取XML文档数据,包括基本语法、节点选择、轴选择、谓词选择等方面的内容。 XPath基础 XPath是一种路径语言,用于在XML文档中定位和选择节点。它由W3C组织制定的,旨在提供...

    Java中使用xpath获取xml中的数据

    本篇将深入探讨如何在Java中利用XPath来提取XML文档中的数据,以及相关的实现步骤和关键知识点。 首先,理解XPath的基本概念至关重要。XPath使用路径表达式来选取XML文档中的节点。这些路径表达式类似于文件系统中...

    Xpath 解析xml文件转化为csv文件

    总结一下,XPath是XML处理中的强大工具,能够方便地定位和选取XML文档中的数据。将XML文件转换为CSV文件是一项常见的数据处理任务,通常需要结合编程语言和相应的库完成。在实际操作中,需要考虑XML的结构、XPath的...

    用XPath 表达式从 XML 文档中提取信息

    通过阅读这份文档,你可以深入理解XPath的工作原理,并掌握如何利用XPath有效地从XML文档中提取信息,从而提升在处理XML数据时的效率。 学习XPath不仅能够提高对XML数据的处理能力,还能为理解和使用XSLT、XPath...

    B06_1_Xpath提取网页数据.md

    ### Xpath提取网页数据知识点详解 #### 一、Xpath简介 Xpath是一种查询语言,主要用于在XML文档中查找信息。它可以轻松地在XML文档中通过元素和属性进行导航。虽然Xpath最初是为了处理XML而设计的,但它同样适用于...

    用XSLT和Xpath查询XML文档.doc

    - 数据检索:XPath用于在XML文档中快速定位所需数据,提高了数据提取的效率。 - 文档呈现:XSLT可以根据业务需求,将XML数据转换为用户友好的HTML页面或其他格式,适应不同终端和应用场景。 - 数据交换:XML作为...

    Xpath读取xml文件,实现文件缓存。

    XPath是XML文档遍历和数据提取的重要工具,它允许我们以简洁的方式定位XML文档中的元素、属性和其他节点。在这个场景中,“Xpath读取xml文件,实现文件缓存”指的是利用XPath来高效地检索XML数据,并通过缓存机制...

    JsonPath使用类似XPATH的语法从JSON提取数据

    JsonPath是一种用于从JSON文档中提取数据的语言,其语法与XPath在XML文档中的操作非常相似。XPath是XML处理中常用的一种路径表达式语言,而JsonPath则是为JSON数据设计的查询语言。在Java开发中,处理JSON格式的数据...

    从XML文件抽出XPath - C and C++

    XPath,全称XML Path Language,是一种在XML文档中查找信息的语言。它被设计用来选取XML文档中的节点,如元素、属性、文本等。XPath使用路径表达式来选取节点,类似于我们在网页浏览器中输入URL来访问特定页面的方式...

    xpath解析xml

    XPath可以帮助我们高效地从XML文档中提取所需的数据并填充Map。例如,我们可以使用`javax.xml.xpath`包提供的`XPathFactory`、`XPath`和`XPathConstants`类来实现这一过程。 4. **避免生成过多的Bean类** 当XML...

    google-xpath提取器插件

    综合以上信息,我们可以得出,“google-xpath提取器插件”是一款专为Google Chrome浏览器设计的工具,它的主要功能是帮助用户轻松地获取网页元素的XPath路径,从而进行网页数据的提取和分析。用户只需简单几步即可...

    支持xpath的高效xml解析库源代码

    例如,使用XPath可以很容易地找到文档中具有特定属性或值的元素,这对于数据提取和处理尤其有用。 **高性能** PUGIXML的高效性体现在两个方面:内存管理和解析速度。库的设计避免了不必要的内存分配,减少了CPU和...

    Demo4j和XPath解析XML的文件路径表达式(ZVON.org - X 路径教程)

    通过理解XPath的基本语法和使用DOM4J的API,开发者能够高效地导航XML文档,提取所需的数据,从而提高XML处理的效率和灵活性。在实际项目中,XPath不仅可以用于简单的查询,还能在XML验证、转换和数据绑定等方面发挥...

    XPath 为 xml查询语言,方便xml遍历,简化xml操作。

    XPath(XML Path Language)是一种用于在XML文档中查找信息的语言,它提供了简便的方式来遍历XML文档结构并提取所需数据。XPath基于XML文档的树状结构,通过路径表达式来定位XML文档中的节点,包括元素、属性、文本...

    mybatis入门之xpath解析xml

    XPath通过路径表达式来选取XML文档中的节点,它是XML处理中的重要工具,尤其在数据绑定和数据处理框架中,如MyBatis。 MyBatis是一个优秀的Java持久层框架,它简化了数据库操作,将SQL语句与Java代码解耦,通过XML...

    《使用kettle把XML文档转换成数据表结构》附件

    在这个场景中,我们将探讨如何使用Kettle将XML文档转换为数据表结构。 XML是一种通用的数据交换格式,广泛用于存储和传输结构化信息。然而,很多数据库和分析工具更倾向于以表格形式存储数据。Kettle提供了解决这个...

Global site tag (gtag.js) - Google Analytics