我在获取也具有特定属性的唯一元素列表(基于名称)时遇到了一些麻烦。我可以得到其中任何一个的列表,但组合列表是让我绊倒的地方。我的 xml 看起来像这样:
<global>
<discipline name="tracks">
<group name="Normal"/>
<group name="Gloss" PackGroup="Diffuse"/>
<group name="Mask"/>
<group name="Diffuse"/>
<group name="Tint" PackGroup="Gloss"/>
</discipline>
<discipline name="trains">
<group name="Mask"/>
<group name="Diffuse" PackGroup="Mask"/>
</discipline>
</global>
我可以使用这个 xpath 查询很容易地获得一个不同的组元素列表:
/configuration/global/discipline/group[not(@name = following::group/@name)]
并获取定义了 PackGroup 属性的组元素列表也很简单:
/configuration/global/discipline/group[@PackGroup]
但是,我似乎无法获得定义了 PackGroup 属性的元素的唯一列表。我试过这个:
/configuration/global/discipline/group[not(@name = following::group/@name) and @PackGroup]
/configuration/global/discipline/group[not(@name = following::group/@name) and contains(@PackGroup, '*')]
不返回任何元素并且
/configuration/global/discipline/group[not(@name = following::group/@name) and contains(@PackGroup, '')]
它只返回唯一列表。有谁知道正确的 xpath 查询是什么来获得我正在寻找的东西?
(我正在使用 C# 和 xpath 2.0 以防万一)
谢谢!