如何使用XPATH在xml中查找重复的属性值

时间:2017-01-01 15:19:06

标签: xml c#-4.0 xpath

我有以下XML:

<RootNode>
    <innerNode name="x1"/>
    <innerNode name="x2"/>
    <innerNode name="x1"/>
    <innerNode name="x3"/>
</RootNode>

我如何使用XPATH找到并且没有迭代结果,innerNode具有重复的名称? (在上面的例子中,x1是重复的。)

2 个答案:

答案 0 :(得分:2)

以下XPath将返回innerNode个元素,其中name属性在兄弟innerNode元素中有重复:

//innerNode[
    @name = following-sibling::innerNode/@name
        or
    @name = preceding-sibling::innerNode/@name
]

<强> demo

答案 1 :(得分:1)

作为更全面的解决方案,改编自answer from a similar question

//innerNode[
    @name = following::innerNode/@name
       or 
    @name = preceding::innerNode/@name
]

即使在嵌套innerNode元素的情况下,也会发现重复项:

<RootNode>
    <innerNode name="x1">
        <innerNode name="x1" />
        <innerNode name="x2" />
    </innerNode>
    <innerNode name="x2">
        <innerNode name="x3" />
    </innerNode>
</RootNode>