0

0

XPath 表达式中使用谓词(Predicate)实现条件筛选

心靈之曲

心靈之曲

发布时间:2026-02-26 17:12:02

|

950人浏览过

|

来源于php中文网

原创

XPath 表达式中使用谓词(Predicate)实现条件筛选

本文介绍如何在 Java 中通过 XPathUtils.compile() 配合 XPath 谓词语法,精准筛选 XML 节点——例如仅提取 1 对应的 值,避免返回空结果或全量数据。

本文介绍如何在 java 中通过 `xpathutils.compile()` 配合 xpath 谓词语法,精准筛选 xml 节点——例如仅提取 `1` 对应的 `` 值,避免返回空结果或全量数据。

在处理结构化 XML 数据时,仅靠路径导航(如 ResourceList/Resource/keyValue)往往不够:它会无差别匹配所有 ,而实际业务常需“带条件提取”,比如只获取 isValid 值为 1 的资源对应的键值。此时,XPath 的谓词(Predicate) 是核心解决方案——它允许你在路径中嵌入布尔表达式,以动态过滤节点集。

谓词写在方括号 [] 内,作用于其前一个节点步(step)。例如:

  • Resource[isValid='1'] 表示:选择所有子节点 文本内容等于 '1' 的 元素;
  • 后续接 /keyValue 即从这些被筛选出的 中提取 子节点。

✅ 正确的 XPath 表达式如下:

Emergent Drums
Emergent Drums

使用Emergent Drums生成独特的鼓样本,全部免版税。

下载
String xpath = "ResourceList/Resource[isValid='1']/keyValue";
List<String> results = XPathUtils.compile(xpath).select(sampleXml);
// 结果:["XYZ"]

⚠️ 注意事项:

  • 引号需匹配:isValid='1' 中单引号是标准写法;若 XML 中 isValid 值含单引号,可改用双引号:isValid="1"。
  • 文本内容匹配:isValid='1' 匹配的是元素的文本内容(即 1 中的 1),而非属性值(如 @isValid)。本例中 isValid 是元素,非属性,切勿误写为 @isValid。
  • 类型安全提示:XPath 1.0 默认将数字字符串按字符串比较。若需数值比较(如 isValid > 0),可写为 number(isValid) = 1,但本例中字符串相等已足够且更高效。
  • 空结果排查:若 select() 返回空列表,请检查:
    • XML 是否严格符合格式(如无隐藏 BOM、编码一致);
    • sampleXml 是否为有效 org.jsoup.nodes.Document 或支持的节点类型(XPathUtils 通常基于 jsoup 或 JAXP 封装,需确认其输入要求);
    • 路径大小写是否与 XML 完全一致(XML 区分大小写)。

? 进阶技巧:支持多条件组合,例如筛选 isValid=1 且 keyValue 不为空:

ResourceList/Resource[isValid='1' and keyValue/text() != '']/keyValue

总结:谓词是 XPath 实现条件过滤的基石。掌握 Node[Condition] 模式,即可灵活构建高精度提取逻辑,大幅提升 XML 解析的准确性和可维护性。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
resource是什么文件
resource是什么文件

Resource文件是一种特殊类型的文件,它通常用于存储应用程序或操作系统中的各种资源信息。它们在应用程序开发中起着关键作用,并在跨平台开发和国际化方面提供支持。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

172

2023.12.20

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1936

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

2111

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

1137

2024.11.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

638

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

218

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1560

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

643

2023.11.24

Golang 实际项目案例:从需求到上线
Golang 实际项目案例:从需求到上线

《Golang 实际项目案例:从需求到上线》以真实业务场景为主线,完整覆盖需求分析、架构设计、模块拆分、编码实现、性能优化与部署上线全过程,强调工程规范与实践决策,帮助开发者打通从技术实现到系统交付的关键路径,提升独立完成 Go 项目的综合能力。

1

2026.02.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
誉天教育RHCE视频教程
誉天教育RHCE视频教程

共9课时 | 1.5万人学习

尚观Linux RHCE视频教程(二)
尚观Linux RHCE视频教程(二)

共34课时 | 6万人学习

尚观RHCE视频教程(一)
尚观RHCE视频教程(一)

共28课时 | 4.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号