我对以下问题颇有挑战。
我的 XML 包含几个带有状态的订单。它们通过将整数附加到标签来组合在一起。如果每个订单都有自己的父标签会更容易,但这是我从外部应用程序获取 XML 的方式,我无法更改它。
<Values>
<ORDER_1>506137</ORDER_1>
<STATUS_1>3</STATUS_1>
<ORDER_2>506129</ORDER_2>
<STATUS_2>4</STATUS_2>
<ORDER_3>51893</ORDER_3>
<STATUS_3>1</STATUS_3>
</Values>
我需要做的是找到与状态“4”相对应的订单。甚至可以使用 XPath 吗?似乎我需要一个通配符来选择状态,但即便如此我如何找到相应的订单?
仅供引用:XPath 1.0
最佳答案
您可以尝试使用 XPath name()
过滤节点名称和 starts-with()
函数,然后使用 preceding-sibling
选择相应的订单元素,例如:
//Values/*[starts-with(name(), 'STATUS_')][.=4]/preceding-sibling::*[1]
以上 XPath 将返回此节点:
<ORDER_2>506129</ORDER_2>
关于xml - XPath 获取类似的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24360261/