首页 文章

XPATH 1.0基于两个元素/键找到重复

提问于
浏览
0

这是我的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>

2 回答

  • 0

    你可以使用 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

    看来,我们无法在xpath 1.0中完成此任务

相关问题