我对以下问题非常挑战。
我的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>
我需要做的是找到与状态&#39; 4&#39;相对应的订单。甚至可以使用XPath吗?看起来我需要一个通配符来选择状态,但即便如此,我如何找到相应的订单呢?
仅供参考:XPath 1.0
答案 0 :(得分:3)
您可以尝试使用XPath name()
和starts-with()
函数过滤节点名称,然后使用preceding-sibling
选择相应的订单元素,例如:
//Values/*[starts-with(name(), 'STATUS_')][.=4]/preceding-sibling::*[1]
以上XPath将返回此节点:
<ORDER_2>506129</ORDER_2>