如何在XPath中编写带括号的布尔谓词实现多属性组合条件查询
核心结论
XPath 原生支持括号显式指定布尔运算优先级,完全不需要手动对查询返回的节点集做二次逻辑运算。
注意你给出的XML示例存在笔误:<Element>标签的第三个属性写为att3,和你描述的字段名attr3不一致,以下写法以你说明的三个字段名attr1/attr2/attr3为准,实际使用时如果你的XML里用的是att3,替换对应属性名即可。另外XPath的逻辑运算符固定为小写and/or,访问属性必须加@前缀,直接用你写的大写AND/OR、不加@会导致查询失败。
对应需求的XPath语句
- 匹配规则
( attr1="value1" AND attr2="value2" ) OR attr3="value3":
//Element[( @attr1="value1" and @attr2="value2" ) or @attr3="value3"]
- 匹配规则
( attr1="value1" OR attr2="value2" ) AND attr3="value3":
//Element[( @attr1="value1" or @attr2="value2" ) and @attr3="value3"]
内容的提问来源于stack exchange,提问作者SOLID Developper
相关产品推荐
相关产品推荐

