如何使用XPath中的逻辑与运算符筛选值?附XML示例
用XPath逻辑与运算符筛选XML节点的实现方法
没问题,我来帮你搞定这个需求!针对你提供的XML结构,我们可以通过XPath的**逻辑与(and)**运算符来精准筛选同时满足多个条件的<resource>节点,下面给你详细的实现方案和示例:
基础语法说明
XPath里实现“同时满足多个条件”有两种常用写法,效果完全一致,你可以根据习惯选择:
- 显式使用
and关键字连接多个条件 - 用多个方括号
[]依次叠加条件(隐式逻辑与,多个条件需同时成立)
结合你的XML实例的具体示例
先把你提供的XML节点结构再明确下(方便对照):
示例1:筛选同时满足parentID为1701且nodeName为facebook的节点
用and关键字的写法:
//resource[@parentID="1701" and @nodeName="facebook"]
用多括号的写法:
//resource[@parentID="1701"][@nodeName="facebook"]
这两个表达式都会精准匹配到你提供的那个<resource>节点。
示例2:筛选creatorName为Scott且updateDate在2018年4月的节点
如果需要匹配属性值的部分内容,可以结合contains()函数,比如要找更新时间在2018年4月的节点:
//resource[@creatorName="Scott" and contains(@updateDate, "2018:04")]
示例3:筛选level为3且nodeType为1705的节点
//resource[@level="3" and @nodeType="1705"]
注意事项
- 属性值的引号:XPath支持单引号和双引号,如果你要筛选的属性值本身包含其中一种引号,记得换用另一种,比如属性值是
Scott's resource,就写成@creatorName='Scott's resource'会报错,应该用@creatorName="Scott's resource" - 节点层级:
//resource会匹配XML中所有层级的<resource>节点,如果你的XML有嵌套结构,只想找根节点下的直接子节点,可以写成/root/resource(替换成你的实际根节点名称)
内容的提问来源于stack exchange,提问作者DanielJ
相关产品推荐
相关产品推荐

