You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XQuery中如何通过位置从XML变量中选择指定元素?

解决方案

首先修正你的XML语法错误:末尾的<MaterialList>应该改为</MaterialList>,否则XML无法被正常解析。

针对提取值为1111111的Number元素,以下是正确的XPath表达式及对之前错误的分析:

正确的XPath表达式

按值匹配(推荐,不受节点位置变化影响)

如果你的环境支持直接对变量中的XML节点集执行XPath:

$input.VariableInput/MaterialList/Material/Number[text()='1111111']

或者更简洁的递归查找(XPath 2.0+支持):

$input.VariableInput//Number[.='1111111']

若必须按位置取(不推荐,位置变化会失效)

如果要取第二个Material下的Number,正确写法是:

$input.VariableInput/MaterialList/Material[2]/Number

之前表达式的错误分析

  1. 第一个表达式$input.VariableInput/*:MaterialList/*:Material/*[position() = 2]

    • 你的XML没有声明任何命名空间,*:前缀完全多余,会导致节点匹配失败;
    • *[position()=2]是取Material下的第二个子元素(即Name),不是Number,逻辑错误。
  2. 第二个表达式doc("$input.VariableInput")/MaterialList/Material/Number[2]

    • doc()函数用于读取文件系统中的XML文件,而VariableInput是内存中的变量,不能用doc()加载;
    • Number[2]表示取单个Material下的第二个Number元素,但每个Material只有一个Number,所以这个写法逻辑错误,应该改为Material[2]/Number。

内容的提问来源于stack exchange,提问作者Rajesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 14:17:42