Dom4j完整教程~通过xpath查找指定的节点

采用xpath查找需要引入jaxen-xx-xx.jar,否则会报java.lang.NoClassDefFoundError: org/jaxen/JaxenException异常。

List list=document.selectNodes("/books/book/@show");

xpath语法

1、选取节点

XPath 使用路径表达式在 XML 文档中选取节点,节点是沿着路径或者 step 来选取的。

常见的路径表达式:

表达式

描述

nodename

选取当前节点的所有子节点

/

从根节点选取

//

从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置

.

选取当前节点

..

选取当前节点的父节点

@

选取属性

实例

路径表达式

结果

bookstore

选取 bookstore 元素的所有子节点

/bookstore

选取根元素 bookstore

bookstore/book

选取bookstore 下名字为 book的所有子元素

//book

选取所有 book 子元素,而不管它们在文档中的位置。

bookstore//book

选取bookstore 下名字为 book的所有后代元素,而不管它们位于 bookstore 之下的什么位置。

//@lang

选取所有名为 lang 的属性。

2、谓语(Predicates)

谓语用来查找某个特定的节点或者包含某个指定的值的节点。

谓语被嵌在方括号中。

实例

常见的谓语的一些路径表达式:

路径表达式

结果

/bookstore/book[1]

选取属于 bookstore 子元素的第一个 book 元素。

/bookstore/book[last()]

选取属于 bookstore 子元素的最后一个 book 元素。

/bookstore/book[last()-1]

选取属于 bookstore 子元素的倒数第二个 book 元素。

/bookstore/book[position()<3]

选取最前面的两个属于 bookstore 元素的子元素的 book 元素。

//title[@lang]

选取所有拥有名为 lang 的属性的 title 元素。

//title[@lang='eng']

选取所有 title 元素,要求这些元素拥有值为 eng 的 lang 属性。

/bookstore/book[price>35.00]

选取所有 bookstore 元素的 book 元素,要求book元素的子元素 price 元素的值须大于 35.00。

/bookstore/book[price>35.00]/title

选取所有 bookstore 元素中的 book 元素的 title 元素,要求book元素的子元素 price 元素的值须大于 35.00

3、选取未知节点

XPath 通配符可用来选取未知的 XML 元素。

通配符

描述

*

匹配任何元素节点

@*

匹配任何属性节点

node()

匹配任何类型的节点

实例

路径表达式

结果

/bookstore/*

选取 bookstore 元素的所有子节点

//*

选取文档中的所有元素

//title[@*]

选取所有带有属性的 title 元素。

4、选取若干路径

通过在路径表达式中使用“|”运算符,您可以选取若干个路径。

实例

路径表达式

结果

//book/title | //book/price

选取所有 book 元素的 title 和 price 元素。

//title | //price

选取所有文档中的 title 和 price 元素。

/bookstore/book/title|//price

选取所有属于 bookstore 元素的 book 元素的title 元素,以及文档中所有的 price 元素。

5、XPath 轴

轴可定义某个相对于当前节点的节点集。

轴名称

结果

ancestor

选取当前节点的所有先辈(父、祖父等)

ancestor-or-self

选取当前节点的所有先辈(父、祖父等)以及当前节点本身

attribute

选取当前节点的所有属性

child

选取当前节点的所有子元素。

descendant

选取当前节点的所有后代元素(子、孙等)。

descendant-or-self

选取当前节点的所有后代元素(子、孙等)以及当前节点本身。

following

选取文档中当前节点的结束标签之后的所有节点。

namespace

选取当前节点的所有命名空间节点

parent

选取当前节点的父节点。

preceding

选取文档中当前节点的开始标签之前的所有节点。

preceding-sibling

选取当前节点之前的所有同级节点。

self

选取当前节点。

6、路径

位置路径可以是绝对的,也可以是相对的。

绝对路径起始于正斜杠( / ),而相对路径不会这样。在两种情况中,位置路径均包括一个或多个步,每个步均被斜杠分割:

/step/step/...
step/step/...

每个步均根据当前节点集之中的节点来进行计算。

轴(axis):定义所选节点与当前节点之间的树关系

节点测试(node-test):识别某个轴内部的节点

零个或者更多谓语(predicate):更深入地提炼所选的节点集

步的语法轴名称::节点测试[谓语]

实例

例子

结果

child::book

选取所有属于当前节点的子元素的 book 节点

attribute::lang

选取当前节点的 lang 属性

child::*

选取当前节点的所有子元素

attribute::*

选取当前节点的所有属性

child::text()

选取当前节点的所有文本子节点

child::node()

选取当前节点的所有子节点

descendant::book

选取当前节点的所有 book 后代

ancestor::book

选择当前节点的所有 book 先辈

ancestor-or-self::book

选取当前节点的所有book先辈以及当前节点(假如此节点是book节点的话)

child::*/child::price

选取当前节点的所有 price 孙。

7、XPath 运算符

运算符

描述

实例

返回值

|

计算两个节点集

//book | //cd

返回所有带有 book 和 ck 元素的节点集

+

加法

6 + 4

10

-

减法

6 - 4

2

*

乘法

6 * 4

24

div

除法

8 div 4

2

=

等于

price=9.80

如果 price 是 9.80,则返回 true。

如果 price 是 9.90,则返回 fasle。

!=

不等于

price!=9.80

如果 price 是 9.90,则返回 true。

如果 price 是 9.80,则返回 fasle。

小于

price<9.80

如果 price 是 9.00,则返回 true。

如果 price 是 9.90,则返回 fasle。

<=

小于或等于

price<=9.80

如果 price 是 9.00,则返回 true。

如果 price 是 9.90,则返回 fasle。

大于

price>9.80

如果 price 是 9.90,则返回 true。

如果 price 是 9.80,则返回 fasle。

>=

大于或等于

price>=9.80

如果 price 是 9.90,则返回 true。

如果 price 是 9.70,则返回 fasle。

or

price=9.80 or price=9.70

如果 price 是 9.80,则返回 true。

如果 price 是 9.50,则返回 fasle。

and

price>9.00 and price<9.90

如果 price 是 9.80,则返回 true。

如果 price 是 8.50,则返回 fasle。

mod

计算除法的余数

5 mod 2

1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/495727.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

盘点丨毕业年薪34万,高校人工智能研究哪家强?

来源&#xff1a;亿欧网摘要&#xff1a;人才短缺已经成为了制约人工智能技术发展和应用落地的一大短板&#xff0c;为了弥补这一短板&#xff0c;加强人才培养&#xff0c;近日教育部发布了《高等学校人工智能创新行动计划》此前有报道显示&#xff0c;2017年AI工程师平均年薪…

第1章 Hello MFC

微软 MFC 官方文档&#xff1a;https://docs.microsoft.com/zh-cn/cpp/mfc/mfc-desktop-applications?viewvs-2019 MFC 层次结构图以及下载地址&#xff1a;https://docs.microsoft.com/zh-cn/cpp/mfc/hierarchy-chart?viewvs-2019 VC6.0/VS2005/VS2010/VS2012/VS2013/VS201…

navigator 对象

转载&#xff1a; http://www.itlearner.com/code/js_ref/brow1.htm 包含了正在使用的 Navigator 的版本信息。 客户端对象 实现版本 Navigator 2.0 Navigator 3.0: 添加了 mimeTypes 和 plugins 属性&#xff1b;添加了 javaEnabled 和 taintEnabled 方法。 Navigator 4.0: …

产业|MIR睿工业:2018年机器人市场分析报告

来源&#xff1a;Robot未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&#xff0c;互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联网&#xff…

p1和p7签名的区别

前言: P1签名:即裸签名,签名值中只有签名信息. p7签名:即,签名中可以带有其他的附加信息,例如签名证书信息,签名原文信息,时间戳信息等. 所以要注意,不要p7的签名,用p1的方式来验签,这样是不对的.是错误的. 数字签名中,包含了两个过程: 1.对要签名的信息,用指定的hash算法,获取…

用 Python 和 werobot 框架开发公众号

From&#xff1a;用 Python 和 werobot 框架开发公众号&#xff1a;https://www.jianshu.com/p/a517746a900f WeRoBot 官方文档 &#xff1a;https://werobot.readthedocs.io/zh_CN/latest/ Github &#xff1a;https://github.com/offu/WeRoBot Python — WeRobot&#xff0…

专家:智能芯片国际竞争愈发激烈,应尽快制定国家标准

来源&#xff1a; 科技日报摘要&#xff1a;近日&#xff0c;十三届全国政协第一次双周协商座谈会在京召开。会议聚焦的话题是人工智能的发展与对策。夯实基础&#xff0c;提升原始创新能力中科院计算所智能处理器中心主任陈云霁做的就是智能芯片&#xff0c;作为智能芯片公司寒…

easyExcel 使用指南详解

来源&#xff1a;easyExcel 使用指南详解 - 知乎 easyExcel简介 Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行&#xff0c;但是一旦并发上来后一定会OOM或者JVM频繁的full g…

(转)Web Services使用多态(XmlInclude) ,支持自定义类型

Web Services使用多态(XmlInclude) 在Web Services方法中&#xff0c;往往使用的都是一个具体类型的参数&#xff0c;这个参数一般就是一个数据对象。ASP.NET Web Services通过声明XmlIncludeAttribute可以实现Web Services方法中运用多态。 XmlIncludeAttribute允许XmlSeriali…

EasyExcel快速上手~读取

对象 // 如果没有特殊说明&#xff0c;下面的案例将默认使用这个实体类 public class DemoData {private String string;private Date date;private Double doubleData;// getting setting }监听器 // 如果没有特殊说明&#xff0c;下面的案例将默认使用这个监听器 public cl…

激光破解太空通信难题

来源&#xff1a;新浪科技摘要&#xff1a;虽然目前而言无线电天线仍然是太空通信的支柱&#xff0c;但目前未来发展方向是激光通讯系统。在太空中&#xff0c;没有人会听到你的尖叫——因为声音不会在真空中传播&#xff0c;而且你需要某种类型的无线电波中继携载这些信息&…

Docker 原理、学习教程

Docker 官网 &#xff1a;https://www.docker.com/ Docker Hub&#xff1a;https://registry.hub.docker.com/search?qkali Docker 容器超详细讲解&#xff1a;https://www.linuxidc.com/Linux/2018-08/153712.htm Docker Compose&#xff1a;https://www.runoob.com/docker…

System.Runtime.InteropServices.Automation

提供使基于 Silverlight 的应用程序可以与自动化 API 进行交互操作的类。 类&#xff1a; 1.AutomationEvent:  表示一个自动化事件 2.AutomationEventArgs:  为AutomationEvent.EventRaised事件提供数据 3. AutomationFactory :  提供对已注册的自动化服务器的访问转载于…

从自动驾驶到基因编辑,这15项发明专利改变了世界

来源&#xff1a;资本实验室近期&#xff0c;中兴通讯受美国制裁的事件戳中了国人心中的“痛”&#xff0c;也对我们长期受制于人的芯片核心技术与产业敲响了警钟。我们近乎被动地发现&#xff0c;在科技创新&#xff0c;尤其是技术驱动型创新方面&#xff0c;我们的差距到底有…

org.dom4j.DocumentFactory cannot be cast to org.dom4j.DocumentFactory

引入cryptofront-2.1.6.jar后dom4j执行异常 解决方案&#xff0c;强制在cryptofront-2.1.6.jar加载前&#xff0c;加载dom4j dom4j引入不完整

【原】StreamInsight 浅入浅出(四)—— 例子

对于StreamInsight这种不是很线性的架构&#xff0c;最好还是直接拿出来一个例子&#xff0c;简单但完整的把流程走过一遍&#xff0c;更能看清所谓“流”、“事件”、“适配器”之类到底是什么东西&#xff0c;有什么关系。 官方例子下载地址&#xff1a;http://go.microsoft.…

Cheat Engine 教程( 1 - 9 通关 )

工具包&#xff1a;https://down.52pojie.cn/Tools/Debuggers/ Cheat Engine 官网&#xff1a;https://www.cheatengine.org/ ce 修改器绿色版(cheat engine) v7.4 官方最新版&#xff1a;http://www.downcc.com/soft/21673.html 这个教程全部是来自 Cheat Engine 软件的中的…

人工智能元老痛批IBM:沃森是个骗局,这根本不是认知

作者 Roger Schank李林 编译整理量子位 出品 | 公众号 QbitAI一篇质疑IBM的旧文今天在HackerNews上火了起来&#xff0c;虽已时隔两年&#xff0c;这篇文章还是引起了网友们的强烈共鸣。文章作者Roger Schank是AI领域元老人物&#xff0c;AAAI Fellow&#xff0c;曾任耶鲁大学人…

判断字符串中是否包含中文

判断字符串中是否包含中文 selectcasewheny我like%[啊-座]%then包含中文 else不包含中文 end转载于:https://www.cnblogs.com/stublue/archive/2010/11/05/1869916.html

OllyDBG完美教程(超强入门级)

OllyDBG 视频教程&#xff1a;https://www.bilibili.com/video/av6889190 动态调试工具之OllyDbg(OD)教程&#xff1a;https://www.bilibili.com/video/av70600053 使用 OllyDbg 从零开始 Cracking.chm ( 58章 )&#xff1a;https://pan.baidu.com/s/18iXvF5I_No4-a1DK3jKrbg …