`

dom4j-xpath的使用

    博客分类:
  • JAVA
阅读更多

所需jar包:

dom4j.jar

jaxen.jar

xml测试页面:

<?xml version="1.0" encoding="ISO-8859-1"?>

<bookstore desc="book set">
	book1
<book category="COOKING">
  <title lang="en">Everyday Italian</title>
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>
book2
<book category="CHILDREN">
  <title lang="en">Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>
book3
<book category="WEB">
  <title lang="en">XQuery Kick Start</title>
  <author>James McGovern</author>
  <author>Per Bothner</author>
  <author>Kurt Cagle</author>
  <author>James Linn</author>
  <author>Vaidyanathan Nagarajan</author>
  <year>2003</year>
  <price>49.99</price>
</book>
book4
<book category="WEB">
  <title lang="en">Learning XML</title>
  <author>Erik T. Ray</author>
  <year>2003</year>
  <price>39.95</price>
</book>
book5
<book category="JSP">
  <title lang="hx">Learning JSP</title>
  <author>Erik T. Ray</author>
  <year>2006</year>
  <price>22</price>
</book>

</bookstore>

 java测试代码:

SAXReader reader = new SAXReader();
		InputStream inputStream = BooksXml.class.getClassLoader().getResourceAsStream("books.xml");
		Document doc = reader.read(inputStream);
		//可以先创建xpath表达式
		XPath xPath = doc.createXPath("/bookstore/book");
		List<?> list;
		//也可以直接使用
		list = doc.selectNodes("/bookstore/book");//获取bookstore下面的所有book元素的集合
		list = xPath.selectNodes(doc.getRootElement());//在指定的节点下面找寻满足条件的集合
		list = doc.selectNodes("/bookstore/book/author/text()");//获取作者名字集合
		list = doc.selectNodes("/bookstore/book[price>35]/price");//获取价格大于35的书的价格集合
		list = doc.selectNodes("/bookstore/book[price>35]/title");//获取价格大于35的书的标题集合
		list = doc.selectNodes("/bookstore/book[1]");//获取第一本书
		list = doc.selectNodes("/bookstore/book[last()]");//获取最后一本书
		list = doc.selectNodes("//title[@lang]");//获取书标题中有lang属性的标题集合
		list = doc.selectNodes("//title[@lang='en']");//获取属性lang值等于en的标题集合
		list = doc.selectNodes("/bookstore/book/title | //price");//获取书的标题集合和价格集合
		list = doc.selectNodes("/bookstore/book[position()<3]");//获取前两本书
		list = doc.selectNodes("/bookstore/book/title");//获取所有的title集合
		list = doc.selectNodes("/bookstore/book/title[@*]");//获取含有属性的title集合
		Element root = doc.getRootElement();
		list = root.selectNodes("child::book");//当前节点下面的所有book集合
		list = root.selectNodes("child::*");//当前节点下面的所有子元素集合
		list = root.selectNodes("child::node()");//获取当前节点下面的所有子元素集合
		list = root.selectNodes("attribute::desc");//获取当前节点的desc属性
		list = root.selectNodes("attribute::*");//获取当前节点的所有属性集合
		list = root.selectNodes("child::text()");//获取当前节点的所有文本子节点集合
		list = root.selectNodes("descendant::book");//获取root的后代元素book集合
		
		list = doc.selectSingleNode("/bookstore/book[@category='JSP']")
				   .selectNodes("descendant::title");//获取到具体的书后在获取title元素
		list = doc.selectSingleNode("/bookstore/book[@category='JSP']")
					.selectNodes("ancestor-or-self::book");
		list = root.selectNodes("child::*/child::price");//选取当前节点的所有 price 孙子集合

 

2
1
分享到:
评论

相关推荐

    dom4j-1.6.1 与 dom4j-2.0.0-ALPHA

    1. 支持XPath:DOM4J提供了一种强大的方式来查询XML文档,通过XPath表达式可以轻松地找到需要的数据。 2. 文档对象模型:它允许开发者以面向对象的方式处理XML文档,包括元素、属性、文本节点等。 3. 轻量级:DOM4J...

    dom4j-1.6.1.jar

    4. **XPath支持**:XPath是一种在XML文档中查找信息的语言,dom4j支持XPath 1.0规范,可以通过简单的表达式快速找到需要的节点。 5. **事件处理**:dom4j也支持事件处理模型,允许开发者在XML解析过程中响应特定的...

    dom4j-1.61完整jar包

    它能够与DOM4J、JDOM、XOM等多个XML API协同工作,让开发者能够在不同的XML环境中使用XPath表达式。Jaxen提供了API来评估XPath表达式,返回匹配的节点集,以及执行XPath函数和操作。 **Sitemesh-2.2.1.jar** ...

    dom4j-2.0.3.zip

    DOM4J是基于DOM模型的,但相比Java内置的DOM API,DOM4J更轻量级且易于使用。它支持XPath查询,提供了丰富的事件处理机制,并且与JDOM和XOM等其他XML库有良好的互操作性。DOM4J的2.0.3版本修复了一些已知问题,提升...

    dom4j-2.1.0.jar dom4j-2.1.0-javadoc.jar

    这里的"dom4j-2.1.0.jar"是DOM4J库的二进制版本,而"dom4j-2.1.0-javadoc.jar"则是该库的API文档,用于帮助开发者理解和使用DOM4J的各种接口和类。 DOM4J的核心功能包括: 1. **XML解析**:DOM4J支持多种解析方式...

    dom4j-2.1.1.jar

    四、DOM4J与其他XML库的比较 DOM4J与JDOM、XOM等其他XML处理库相比,其优势在于功能全面、性能优秀和广泛的社区支持。虽然Java标准库中的JAXB和DOM API提供了XML处理的基础功能,但DOM4J因其简洁的API和强大的功能...

    dom4j-2.1.3.zip

    1. **灵活的文档构建**:DOM4J提供了多种方式来创建和修改XML文档,如通过元素、属性、文本节点等对象直接操作,或者使用XPath表达式定位。 2. **强大的查询能力**:DOM4J支持XPath,可以方便地通过路径表达式查找...

    DOM4J jar包 xml解析 所有的dom4j-1.6.1 dom4j-2.0.2 dom4j-2.1.1包 导入直接使用

    在项目中使用DOM4J时,只需将相应的jar包(如dom4j-1.6.1.jar、dom4j-2.0.2.jar或dom4j-2.1.1.jar)导入到类路径中,即可开始利用其功能处理XML文档。导入后,可以按照DOM4J提供的API进行编程,快速实现XML的读写...

    dom4j-1.6.1.jar和ojdbc14_g.jar包

    2. 数据操作:dom4j提供了XPath支持,可以方便地通过表达式定位XML节点,进行查询和修改。同时,它还支持XML与Java对象之间的映射,简化了数据操作。 3. 序列化:dom4j可以将XML文档对象序列化为字符串或写入文件,...

    dom4j -1.6.1 源码 dom4j -1.6.1 源码

    dom4j的设计目标是简单易用,同时又具有强大的功能,支持XPath查询、XML Schema验证、XML DOM和SAX等接口。在1.6.1版本中,dom4j进一步提升了性能和稳定性,是许多Java开发者在处理XML时的首选库。 **二、核心概念*...

    dom4j-1.6.1

    下面将详细探讨DOM4J的主要特性、使用方法以及它如何优化XML处理。 1. **DOM4J的基本概念** - DOM4J的核心思想是提供一个灵活的、面向对象的模型来处理XML文档,包括元素、属性、文本节点等。 - 它不仅支持标准的...

    dom4j和xpath的jar包

    将DOM4J和XPath结合使用,可以实现高效、准确的XML处理。DOM4J可以加载和解析XML文档,然后利用XPath表达式进行数据检索。这种方式避免了传统遍历DOM树的低效,尤其是在大型XML文档中,XPath的查询性能优势尤为明显...

    dom4j-1.6;dom4j-1.6.1的jar包

    1. **XML解析**:DOM4J可以使用SAX或DOM解析器读取XML文档,同时提供了一种流式处理XML数据的方式,降低了内存消耗。 2. **XPath支持**:DOM4J实现了XPath表达式,允许用户通过简洁的字符串表达式来查找XML文档中的...

    dom4j-1.6.1.jar-306 KB; jaxen-1.1-beta-6.jar-238 KB两个包

    例如,开发者可以先使用DOM4J解析XML文档,然后通过Jaxen执行XPath查询,找出需要的节点,再进行进一步的操作。这样的组合在处理复杂XML结构时,既提高了效率,又降低了代码的复杂性。 在实际项目中,这两个库经常...

    dom4j-1.6.1.jar.zip

    7. **Spring框架集成**:DOM4J与Spring框架有紧密的联系,Spring使用DOM4J来解析和构建配置文件,如XML形式的bean定义。 8. **许可证信息**:压缩包中的"springframework-license.txt"可能包含了Spring框架相关的...

    dom4j-2.1.1.zip

    2. **强大的XPath支持**:DOM4J提供了对XPath(eXtensible Path Language)的强大支持,允许开发者通过表达式快速定位XML文档中的节点,大大简化了数据查找和操作的复杂度。 3. **XML文档的构建和修改**:DOM4J可以...

    dom4j-2.1.0.jar

    DOM4J是Java社区中广泛使用的XML处理库,它的全称是“Document Object Model for Java”,它为XML的解析、操作和处理提供了强大而灵活的支持。在本文中,我们将深入探讨DOM4J 2.1.0版本的核心特性、功能以及如何利用...

    dom4j-1.6.1.jar和xmlbeans-2.6.0.jar

    5. **XPath和XSLT**: 虽然不如DOM4J直接支持XPath,但XMLBeans也提供了对XPath和XSLT的支持,不过需要额外的库。 在项目中,如果你遇到无法通过Maven正确引入这两个依赖的问题,可能的原因有: 1. **Maven配置错误...

Global site tag (gtag.js) - Google Analytics