匹配xpath表达式中的值的数组/列表

时间:2019-05-22 19:13:41

标签: xml xpath

我正在寻找匹配xpath表达式中值的列表/数组的方法,并想知道是否有可能。

我的XML

<Parent-tag>
        <Child-Tag>
            <status>Up</status>
            <prop-name>prop-1</prop-name>
        </Child-Tag>
        <Child-Tag>
            <status>Up</status>
            <prop-name>prop-2</prop-name>
        </Child-Tag>
        <Child-Tag>
            <status>Down</status>
            <prop-name>prop-3</prop-name>
        </Child-Tag>
        <Child-Tag>
            <status>Up</status>
            <prop-name>prop-4</prop-name>
        </Child-Tag>
</Parent-Tag>

我想要一个类似下面的XPATH

/Parent-Tag/Child-Tag[prop-name=('prop-1', 'prop-2','prop-3')]/status

我在线尝试了两个xpath测试器:

(1)https://www.freeformatter.com/xpath-tester.html#xpath-examples

(2)https://www.webtoolkitonline.com/xml-xpath-tester.html

在(1)中,上述表达式返回了值,但在(2)中,返回了语法错误。

我不确定这是否与XPATH版本有关。您知道最新的XPATH是否支持此功能?如果是,那么在较旧的XPATH版本中还有其他方法吗?

这就是说,我知道可以这样实现( 但我不想要 ):

/Parent-Tag/Child-Tag[prop-name='prop-1' or prop-name='prop-2' or prop-name='prop-3')]/status

1 个答案:

答案 0 :(得分:0)

您可以使用contains,如下所示。 (在chrome浏览器中进行了测试,以确保xpath在Xpath 1.0中有效,因为浏览器仅支持xpath 1.0)

/Parent-Tag/Child-Tag[contains('prop-1, prop-2, prop-3',prop-name)]/status

证据浏览器版本:

enter image description here

证据XML版本:

enter image description here