xml - 使用 XPath 1.0 检查 xml 节点中的重复属性值
问题描述
大家下午好。xpath查询遇到困难,请帮忙。这是一个xml文件。
<Payload>
<row IncidentNumber= "PD1"></row>
<row IncidentNumber= "PD1"></row>
<row IncidentNumber= "PD1"</row>
</Payload>
我的目标是通过 xpath 查询检查任何行节点中是否有重复的属性值。写了下面的 xpath 查询,但是没有用。什么问题 ?
boolean(//row/@IncidentNumber[not(. = ./following::row/@IncidentNumber and . = ../preceding::row/@IncidentNumber)])
提前致谢
解决方案
这个 XPath 1.0布尔表达式:
boolean(/Payload/row[@IncidentNumber=preceding-sibling::row/@IncidentNumber])
使用此输入:
<Payload>
<row IncidentNumber="PD1"/>
<row IncidentNumber="PD1"/>
<row IncidentNumber="PD1"/>
</Payload>
输出:
true
在这里测试
这与此输入:
<Payload>
<row IncidentNumber="PD1"/>
<row IncidentNumber="PD2"/>
<row IncidentNumber="PD3"/>
</Payload>
输出:
false
在这里测试
编辑:正确的 XPath 1.0 不同/重复的习语。读作:“有没有row
哪个@IncidentNumber
属性等于前面的任何一个?”
请注意:节点集比较是存在比较。从规范:
如果要比较的两个对象都是节点集,那么当且仅当在第一个节点集中有一个节点并且在第二个节点集中有一个节点使得对两个节点的字符串值都为真。
推荐阅读
- javascript - 动画和更新进度环
- regex - 正则表达式:按出现组拆分
- javascript - 下面的 React js 代码 formatCount 函数是如何工作的?
- rest - 使用 API 查询 Azure 数据库
- html - 想抓取饼图数据。如何有效地使用 XPath?
- jpa - 是否可以通过多个 bean 将 EntityManager 作为参数传递?
- amazon-web-services - 无法在 AWS Codestar 管道上暂存源
- sql - Oracle 内联视图导致更新表达式问题
- curl - 如何使用 curl post 获取 HTTP 状态码
- java - 最终局部变量不能赋值,不能赋值给非最终变量