如何编写多条件Java XPath查询,提取XML中符合要求的投票人员名单
合并条件的XPath查询语句
你可以直接使用以下语句一次性完成所有条件的匹配:
//Vote.Result[Vote.text/a[contains(., 'A9-309')]]/Results.Against/Group[@Identifier='XYZ']/Group.member/text()
逻辑拆解
- 首先用方括号筛选出对应目标决议的
Vote.Result节点:只有节点下的Vote.text/a包含A9-309的投票结果才会被保留 - 从筛选后的投票结果节点出发,定位到反对票集合
Results.Against - 再筛选反对票集合中标识为
XYZ的小组 - 最后提取该小组下所有成员的姓名文本
针对你给出的样例XML,执行该语句会直接返回结果Theresa,和预期匹配。
另外你之前写的查询//Vote.Result/Results.Against/[@Identifier='XYZ']/Group.member/text()存在小语法错误:@Identifier是Group节点的属性,不能直接接在Results.Against节点后面,上述正确语句已经修正了这个问题。
内容的提问来源于stack exchange,提问作者Tomasz
相关产品推荐
相关产品推荐

