首页 > 解决方案 > 获取类型而不是节点的标记 (XML/XPath)

问题描述

我有这个 XML 数据库:

<database>
    <event>
        <location> abc </location>
    </event>
    <event>
        <location> abc </location>
    </event>
    <event>
        <location> abc </location>
    </event>
    <event>
        <location> def </location>
    </event>
    <event>
        <location> def </location>
    </event>
<database>

我试图用 XPath 得到这个输出:

abc
def

位置节点的类型。

如果我使用

//location

输出将是令牌:

abc
abc
abc
def
def

这甚至可以用 XPath 实现吗?我试过了,但没有找到任何解决方案。

标签: javascriptxmlxpath

解决方案


可以使用以下表达式在严格的 XPath 1.0 中进行分组:

/database
    /event
        /location[
            not(. = ../preceding-sibling::event/location)
        ]

注意:这具有二次复杂度。在小型文档中,您不必担心。


推荐阅读