我如何找出 xpath 中的属性是否包含特定列表中的任何值

问题描述 投票:0回答:3

我如何找出 xpath 中的属性是否包含特定列表中的任何值,

例如在下面的情况下,我想从列表 {"35","36","37"} 中找到

X/Y
,其属性
A
有任何值。输出应该是第三个
Y
元素。

<X>
<Y A="1" ></Y>
<Y A="2" ></Y>
<Y A="35" ></Y>
</X>
xml xpath xml-parsing
3个回答
0
投票

你可以用 xpath 1.0 尝试一下,但这有点麻烦,因为你必须分解有问题的列表:

//Y[./@A="35" or ./@A="36" or ./@A="37"]

0
投票

在 xpath 2.0+ 中,它更容易,因为您可以针对序列进行测试...

/X/Y[@A=('35','36','37')]

或正则表达式(如果扩展函数可用,则在 xpath 1.0 中也可能是可能的)

/X/Y[matches(@A,'^3[5-7]$')]

0
投票

在 XPath 1.0 中您可以使用:

//Y[@A = 35 or @A = 36 or @A = 37]

或者更奇特的东西:)

//Y[contains("|35|36|37|", concat('|', @A, '|'))]
© www.soinside.com 2019 - 2024. All rights reserved.