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

在Microsoft ADF中使用XPath提取PICKUP地址遇阻,求排查

ADF XPath表达式失效原因及解决方法

问题出在哪

  • 你写的ADF表达式里*[name()="AddressTypeCode"][text()="PICKUP"][name()="AddressLines"]逻辑完全错误:一个XML节点只能有一个名称,不可能同时叫AddressTypeCode和AddressLines,这相当于找不存在的节点,自然匹配不到任何内容。
  • 层级关联逻辑混乱:正确逻辑是先找到包含AddressTypeCode="PICKUP"的Address节点,再定位它下面的AddressLines/Value,你的表达式跳转层级时完全搞错了节点关系。

正确的ADF XPath表达式(提取首个PICKUP地址的第一个Value)

考虑到ADF对XML命名空间的处理要求,用name()匹配节点名来兼容,修正后的表达式如下:

string(//*[name()="Address"][*[name()="AddressTypeCode" and normalize-space(text())="PICKUP"]]/*[name()="AddressLines"]/*[name()="Value"][position()=1])

或者更贴近你原来在线工具的写法:

string(.//*[name()="Address"][normalize-space(*[name()="AddressTypeCode"])="PICKUP"]/*[name()="AddressLines"]/*[name()="Value"][1])

提取PICKUP地址的多实例内容

提取首个PICKUP地址的第1、2、3个Value

# 第一个Value
string(//*[name()="Address"][*[name()="AddressTypeCode" and normalize-space(text())="PICKUP"]][1]/*[name()="AddressLines"]/*[name()="Value"][1])
# 第二个Value
string(//*[name()="Address"][*[name()="AddressTypeCode" and normalize-space(text())="PICKUP"]][1]/*[name()="AddressLines"]/*[name()="Value"][2])
# 第三个Value
string(//*[name()="Address"][*[name()="AddressTypeCode" and normalize-space(text())="PICKUP"]][1]/*[name()="AddressLines"]/*[name()="Value"][3])

提取前3个PICKUP地址的第一个Value

# 第一个PICKUP地址的第一个Value
string(//*[name()="Address"][*[name()="AddressTypeCode" and normalize-space(text())="PICKUP"]][1]/*[name()="AddressLines"]/*[name()="Value"][1])
# 第二个PICKUP地址的第一个Value
string(//*[name()="Address"][*[name()="AddressTypeCode" and normalize-space(text())="PICKUP"]][2]/*[name()="AddressLines"]/*[name()="Value"][1])
# 第三个PICKUP地址的第一个Value
string(//*[name()="Address"][*[name()="AddressTypeCode" and normalize-space(text())="PICKUP"]][3]/*[name()="AddressLines"]/*[name()="Value"][1])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 21:45:33