这是我的XML
<?xml version = '1.0' encoding = 'UTF-8'?>
<cmps>
<cmp>
<name>abc</name>
<id>302</id>
</cmp>
<cmp>
<name>abc</name>
<id>370</id>
</cmp>
<cmp>
<name>abc</name>
<id>073</id>
</cmp>
<cmp>
<name>abc</name>
<id>302</id>
</cmp>
<cmp>
<name>ab</name>
<id>370</id>
</cmp>
</cmps>
=================== 在上面的xml中,想要找出基于name和id元素的所有重复项。 所以这个xml有一个重复的元素,它具有相同的名称和id。但是在xpath表达式下方显示了两个重复的元素,有人可以更正表达式......任何帮助都表示赞赏
cmps // cmp [id =(following-sibling :: cmp / id)and name =(following-sibling :: cmp / name)]
以上xpath表达式的输出:
<cmp>
<name>abc</name>
<id>302</id>
</cmp>
<cmp>
<name>abc</name>
<id>370</id>
</cmp>
预期产出:
<cmp>
<name>abc</name>
<id>302</id>
</cmp>
答案 0 :(得分:1)
您可以使用not()
:
//cmps//cmp[not(id= (following-sibling::cmp/id)
and name = (following-sibling::cmp/name))]
结果:
<cmp>
<name>abc</name>
<id>302</id>
</cmp>
<cmp>
<name>abc</name>
<id>073</id>
</cmp>
<cmp>
<name>ab</name>
<id>370</id>
</cmp>
答案 1 :(得分:0)
看来,我们无法在xpath 1.0
中完成此任务