xml – 如何选择唯一节点

前端之家收集整理的这篇文章主要介绍了xml – 如何选择唯一节点前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我发现 this page描述了Muenchian方法,但我认为我应用错了.

考虑到这将返回一组年龄:

/doc/class/person/descriptive[(@name='age')]/value

1..2..2..2..3..3..4..7

但是我想要一个节点组,每个年龄只有一个节点.

1..2..3..4..7

每个都似乎返回所有的值,而不是唯一的值:

/doc/class/person/descriptive[(@name='age')][not(value=preceding-sibling::value)]/value
/doc/class/person/descriptive[(@name='age')]/value[not(value=preceding-sibling::value)]

我失踪了什么

以下是一个例子:
<root>
    <item type='test'>A</item>
    <item type='test'>B</item>
    <item type='test'>C</item>
    <item type='test'>A</item>
    <item type='other'>A</item>
    <item type='test'>B</item>
    <item type='other'>D</item>
    <item type=''>A</item>
</root>

而XPath:

//preceding::item/preceding::item[not(.=preceding-sibling::item)]/text()

结果:
A B C D

编辑:
由于mousio评论说,如果它是唯一出现的时间,它不会捕获列表中的最后一个项目.考虑到Fëanor的评论,这里有一个更好的解决方案:

/root/item[not(.=preceding-sibling::item)]

猜你在找的XML相关文章