xml - XPath 获取类似的节点

标签 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>

我需要做的是找到与状态“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/

相关文章:

python - Xpath点击根本不起作用

Google Docs ImportXML 的 XPath 查询

javascript - 在 Firefox 附加组件中对 XML 使用 XPath

ios - 如何在 iOS RSS 应用程序中显示解析后的 XML 中的图像?

python - 使用 python 脚本从 xml 中提取属性和某些标记值

java - XML 库占用空间小

python - 在python中解析包含multifasta BLAST结果的xml文件

java - 如何根据提供的 html 构建 xpath 以单击注销链接

xml - 构造 XQuery 元素属性

android - TextView 和 EditText 看起来很乱