《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

目录
打赏
0
0
0
0
1408
分享
相关文章
Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
【10月更文挑战第17天】Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
127 2
建筑施工一体化信息管理平台源码,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
智慧工地云平台是专为建筑施工领域打造的一体化信息管理平台,利用大数据、云计算、物联网等技术,实现施工区域各系统数据汇总与可视化管理。平台涵盖人员、设备、物料、环境等关键因素的实时监控与数据分析,提供远程指挥、决策支持等功能,提升工作效率,促进产业信息化发展。系统由PC端、APP移动端及项目、监管、数据屏三大平台组成,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
130 7
jvm-48-java 变更导致压测应用性能下降,如何分析定位原因?
【11月更文挑战第17天】当JVM相关变更导致压测应用性能下降时,可通过检查变更内容(如JVM参数、Java版本、代码变更)、收集性能监控数据(使用JVM监控工具、应用性能监控工具、系统资源监控)、分析垃圾回收情况(GC日志分析、内存泄漏检查)、分析线程和锁(线程状态分析、锁竞争分析)及分析代码执行路径(使用代码性能分析工具、代码审查)等步骤来定位和解决问题。
|
5月前
|
使用java在未知表字段情况下通过sql查询信息
使用java在未知表字段情况下通过sql查询信息
63 8
Java智慧工地信息管理平台源码 智慧工地信息化解决方案SaaS源码 支持二次开发
智慧工地系统是依托物联网、互联网、AI、可视化建立的大数据管理平台,是一种全新的管理模式,能够实现劳务管理、安全施工、绿色施工的智能化和互联网化。围绕施工现场管理的人、机、料、法、环五大维度,以及施工过程管理的进度、质量、安全三大体系为基础应用,实现全面高效的工程管理需求,满足工地多角色、多视角的有效监管,实现工程建设管理的降本增效,为监管平台提供数据支撑。
81 3
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
130 2
|
6月前
|
优雅地使用Java Map,通过掌握其高级特性和技巧,让代码更简洁。
【10月更文挑战第19天】本文介绍了如何优雅地使用Java Map,通过掌握其高级特性和技巧,让代码更简洁。内容包括Map的初始化、使用Stream API处理Map、利用merge方法、使用ComputeIfAbsent和ComputeIfPresent,以及Map的默认方法。这些技巧不仅提高了代码的可读性和维护性,还提升了开发效率。
210 3
Java Map新玩法:深入探讨HashMap和TreeMap的高级特性
【10月更文挑战第19天】Java Map新玩法:深入探讨HashMap和TreeMap的高级特性,包括初始容量与加载因子的优化、高效的遍历方法、线程安全性处理以及TreeMap的自然排序、自定义排序、范围查询等功能,助你提升代码性能与灵活性。
50 2
|
6月前
|
Java面试题之cpu占用率100%,进行定位和解决
这篇文章介绍了如何定位和解决Java服务中CPU占用率过高的问题,包括使用top命令找到高CPU占用的进程和线程,以及使用jstack工具获取堆栈信息来确定问题代码位置的步骤。
279 0
Java面试题之cpu占用率100%,进行定位和解决
大数据-58 Kafka 高级特性 消息发送02-自定义序列化器、自定义分区器 Java代码实现
大数据-58 Kafka 高级特性 消息发送02-自定义序列化器、自定义分区器 Java代码实现
124 3
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等