【问题标题】:Selecting multiple nodes using xpath in java在java中使用xpath选择多个节点
【发布时间】:2019-10-23 07:40:37
【问题描述】:

我试图使用 XPath 获取数据。

我可以达到我想要的数据,但是当有多个数据时,只选择第一个。 而且我要统计目标数据的数量。

例如,我想计算 message-vpn 的名称为 vpn/b 的队列的数量。 XML结构如下:

<queues>
    <queue>
        <name> queue/a </name>
        <info>
            <message-vpn> vpn/a </message-vpn>
        </info>
    </queue>
    <queue>
        <name> queue/b </name>
        <info>
            <message-vpn> vpn/b </message-vpn>
        </info>
    </queue>
    <queue>
        <name> queue/c </name>
        <info>
            <message-vpn> vpn/b </message-vpn>
        </info>
    </queue>
</queues>

这是我使用的 xpath 脚本。

/queues/queue/info/message-vpn[text()=("vpn/b")]

当我访问数据时,只选择了 queue/b,而不是 c。 请帮我这样做..

【问题讨论】:

    标签: java xml xpath


    【解决方案1】:

    您的原始 xpath 表达式失败,因为文本 vpn/b 被空格包围。所以另一种方法是

    /queues/queue/info/message-vpn[normalize-space()=("vpn/b")]
    

    如果要统计这些队列的数量,请使用count() 方法:

    count(/queues/queue/info/message-vpn[normalize-space()=("vpn/b")])
    

    【讨论】:

      【解决方案2】:

      试试下面:

      //queues/queue/info/message-vpn[contains(.,'vpn/b')]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-02
        • 1970-01-01
        • 2013-11-28
        • 2014-10-10
        • 1970-01-01
        • 1970-01-01
        • 2016-03-16
        • 1970-01-01
        相关资源
        最近更新 更多