《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一3.4 使用XPath来定位信息

简介: 本节书摘来华章计算机《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一书中的第3章 ,第3.4节,[美] 凯S.霍斯特曼(Cay S. Horstmann) 著陈昊鹏 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.4 使用XPath来定位信息

如果要定位某个XML文档中的一段特定信息,那么,通过遍历DOM树的众多节点来进行查找会显得有些麻烦。XPath语言使得访问树节点变得很容易。例如,假设有如下XML文档:
image

可以通过对XPath表达式/conf?iguration/database/username求值来得到database中的username的值。
使用Xpath执行下列操作比普通的DOM方式要简单得多:
1)获得文档节点。
2)枚举它的子元素。
3)定位database元素。
4)定位其子节点中名字为username的节点。
5)定位其子节点中的text节点。
6)获取其数据。
XPath可以描述XML文档中的一个节点集,例如,下面的XPath:
image

描述了根元素gridbag的子元素中所有的row元素。可以用[]操作符来选择特定元素:
image

这表示的是第一行(索引号从1开始)。
使用@操作符可以得到属性值。XPath表达式
image

描述了第一行第一个单元格的anchor属性。XPath表达式
image

描述了作为根元素gridbag的子元素的那些row元素中的所有单元格的anchor属性节点。
XPath有很多有用的函数,例如:
image

返回gridbag根元素的row子元素的数量。精细的XPath表达式还有很多,请参见http://www.w3c.org/TR/xpath的规范,或者在http://www.zvon.org/xxl/XPathTutorial/ General/examples.html上的一个非常好的在线指南。
Java SE 5.0增加了一个API来计算XPath表达式,首先需要从XPathFactory创建一个XPath对象:
image

然后,调用evaluate方法来计算XPath表达式:
image

你可以用同一个XPath对象来计算多个表达式。
这种形式的evaluate方法将返回一个字符串。这很适合用来获取文本,比如前面的例子中的username节点中的文本。如果XPath表达式产生了一组节点,请做如下调用:
image

如果结果只有一个节点,则以XPathConstants.NODE代替:
image

如果结果是一个数字,则使用XPathConstants.NUMBER:
image

不必从文档的根节点开始搜索,可以从任意一个节点或节点列表开始。例如,如果你有前一次计算得到的节点,那么就可以调用:
image

程序清单3-7中的程序演示了XPath表达式的求值操作。只要载入一个XML文件,键入一个表达式,选择表达式的类型,点击计算按钮,表达式的结果就会在框架底部显示出来了(见图3-5)。
image

程序清单3-7 xpath/XPathTester.java
image
image
image
image
image
image
image

相关文章
|
7天前
|
JavaScript 前端开发 数据可视化
JAVA人员定位系统源码,Java高精度定位系统源码
1、对各个地图以及各个区域内的人员信息快速查看,以图表的形式展示,更加清晰。 2、主要包括人员动态数据、各类告警事件、员工巡检状态等。
22 3
|
1月前
|
Java API 数据库
基于Java的大中型企业人力资源管理信息系统设计与开发
基于Java的大中型企业人力资源管理信息系统设计与开发
26 0
基于Java的大中型企业人力资源管理信息系统设计与开发
|
1月前
|
开发框架 Java API
最新Java基础系列课程--Day13-高级特性(二)
最新Java基础系列课程--Day13-高级特性
|
1月前
|
Java 流计算
这个错误信息来自于Java的ScheduledThreadPoolExecutor类
这个错误信息来自于Java的ScheduledThreadPoolExecutor类
30 7
|
2月前
|
Java
如何看java中锁的对象头锁信息
如何看java中锁的对象头锁信息
|
2月前
|
JavaScript 前端开发 安全
【java】工业园区高精准UWB定位系统源码
巡检管理: 1、可查看巡检人员执行任务的轨迹,全面记录巡检时间、地点、耗时、作业顺序等。 2、结合小程序,使巡检人员执行任务更加方便,一键下发和接收巡检任务。 定位系统技术架构:开发语言:JAVA   开发工具:idea 、VS Code   数 据 库:MYSQL  前端框架:Vue   后端框架:Spring boot  技术架构:单体服务 + 硬件(UWB定位基站、卡牌)
30 1
|
3天前
|
Java 流计算
这个错误信息来自于Java的ScheduledThreadPoolExecutor类,具体的原因是RejectedExecutionException,也就是任务被拒绝执行
【2月更文挑战第3天】这个错误信息来自于Java的ScheduledThreadPoolExecutor类,具体的原因是RejectedExecutionException,也就是任务被拒绝执行
12 2
|
4天前
|
人工智能 文字识别 Java
AI工具【OCR 01】Java可使用的OCR工具Tess4J使用举例(身份证信息识别核心代码及信息提取方法分享)
【2月更文挑战第1天】Lept4J和Tess4J都是基于Tesseract OCR引擎的Java接口,可以用来识别图像中的文本,本次介绍Tess4J
33 0
|
1月前
|
Java
Java PDF 相关 1、拷贝多个PDF到一个PDF,并且文件大小变小,文本等信息保留
1、合并多个PDF,并且文件变小,后面添加的文本信息保留
19 0
|
1月前
|
Java 程序员 API
最新Java基础系列课程--Day13-高级特性(三)
最新Java基础系列课程--Day13-高级特性