XPath得到节点

时间:2014-06-23 07:09:05

标签: xml xpath

我对以下问题非常挑战。

我的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

1 个答案:

答案 0 :(得分:3)

您可以尝试使用XPath name()starts-with()函数过滤节点名称,然后使用preceding-sibling选择相应的订单元素,例如:

//Values/*[starts-with(name(), 'STATUS_')][.=4]/preceding-sibling::*[1]

以上XPath将返回此节点:

<ORDER_2>506129</ORDER_2>