dom4j通过xpath查询xml

el/2024/7/17 20:40:53
  1. 获取Document
    • SAXReader saxReader = new SAXReader();
    • Document document = saxReader.read(FileUtil.getFileInputStream(fileName));
  2. 查询Element
    • String xpath ="/composites/composite[@type='onDelete']";//查询属性type='ondDelete'的composite
    • List composites = document.selectNodes(xpath);
  3. xpath语法

选取节点

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

下面列出了最有用的路径表达式:

表达式 描述
nodename 选取此节点的所有子节点
/ 从根节点选取
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置
. 选取当前节点
.. 选取当前节点的父节点
@ 选取属性

实例

在下面的表格中,我们已列出了一些路径表达式以及表达式的结果:

路径表达式 结果
bookstore 选取 bookstore 元素的所有子节点
/bookstore

选取根元素 bookstore

注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径!

bookstore/book 选取所有属于 bookstore 的子元素的 book 元素。
//book 选取所有 book 子元素,而不管它们在文档中的位置。
bookstore//book 选择所有属于 bookstore 元素的后代的 book 元素,而不管它们位于 bookstore 之下的什么位置。
//@lang 选取所有名为 lang 的属性。

谓语(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 元素,且其中的 price 元素的值须大于 35.00。
/bookstore/book[price>35.00]/title 选取所有 bookstore 元素中的 book 元素的 title 元素,且其中的 price 元素的值须大于 35.00。

选取未知节点

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

通配符 描述
* 匹配任何元素节点
@* 匹配任何属性节点
node() 匹配任何类型的节点

实例

在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:

路径表达式 结果
/bookstorechild::price 选取当前节点的所有 price 孙。

XPath 运算符

下面列出了可用在 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。

<</td> 小于 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.ngui.cc/el/5557495.html

相关文章

javanbsp;Future

在Java中&#xff0c;如果需要设定代码执行的最长时间&#xff0c;即超时&#xff0c;可以用Java线程池ExecutorService类配合Future接口来实现。 Future接口是Java标准API的一部分&#xff0c;在java.util.concurrent包中。Future接口是Java线程Future模式的实现&#xff0c;可…

CentOSnbsp;6.2nbsp;安装五笔输入法

现在流行的中文输入法:ibus 五笔、拼音等都有 推荐 极点五笔,默认右shift切换成拼音&#xff0c;左shift切换成英文。 输入习惯跟原先的windows一样。 yum install ibus-table-wubi

树形结构数据库的保存方式(mysql)

CREATE TABLE groups ( g_id int(11) NOT NULL auto_increment COMMENT 主键, g_name varchar(100) NOT NULL COMMENT 用户组名&#xff08;唯一约束, g_authority varchar(100) character set utf8 collate utf8_bin NOT NULL COMMENT 用户组权限&#xff08;构思中, g_parent…

Java解压和压缩带密码的zip文件(转…

提示&#xff1a;本文介绍的是winzipaes项目&#xff0c;但该开源项目使用起来并不太方便&#xff0c;我最终也没有采用它&#xff0c;如果您有在Java语言环境中处理zip压缩文件的需要&#xff0c;推荐采用zip4j这一开源项目&#xff0c;相比winzipaes仅支持AES算法而言&#x…

CENTOSnbsp;设置文件夹打开方式:…

1. 系统&#xff0d;&#xff0d;首选项&#xff0d;&#xff0d;文件管理&#xff0d;&#xff0d;行为&#xff0d;&#xff0d;勾选总是在浏览窗口打开。 2.用鼠标滚轮双击文件夹

lucenenbsp;排序、过滤、分词器

1. 排序 1.1. Sort类 public Sort() public Sort(String field) public Sort(String field,Boolean reverse) //默认为false&#xff0c;降序排序 public Sort(String[] fields) public Sort(SortField field) public Sort(SortField[] fields) Sort sortnew Sort(“bookname…

Java判断文件类型nbsp;(转)

通常&#xff0c;在WEB系统中&#xff0c;上传文件时都需要做文件的类型校验&#xff0c;大致有如下几种方法&#xff1a; 1. 通过后缀名&#xff0c;如exe,jpg,bmp,rar,zip等等。 2. 通过读取文件&#xff0c;获取文件的Content-type来判断。 3. 通过读取文件流&#xff0c;根…

java反射调用静态方法

Class c; c Class.forName("class name"); Method m c.getMethod("method name", new Class[] {int.class, int.class, int.class,int.class}); m.invoke(c, new Object[] {1,2, 3, 4});

Cometnbsp;(web技术)

Comet是一种用于web的推送技术&#xff0c;能使服务器能实时地将更新的信息传送到客户端&#xff0c;而无须客户端发出请求&#xff0c;目前有两种实现方式&#xff0c;长轮询和iframe流。 长轮询 长轮询是在打开一条连接以后保持&#xff0c;等待服务器推送来数据再关闭的方式…

CentOS6.2nbsp;解决安装腾达w311m…

解压好软件包;2011_0407_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.2_DPO.bz2 在文件夹下make; 提示: make****/lib/modules/2.6.32-279.0.1.el6.x86_64/build没有文件或文件夹。 于是到这个文件夹下&#xff0c;试着打开build&#xff0c;系统提示软链接错误是否删除&…