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

如何在Azure Data Factory中读取XML元素存入变量用于后续API调用

方案1:无需落地XML的最优实现(推荐)

可以跳过将XML保存到Data Lake的步骤,直接在管道内处理响应,减少存储IO开销,流程如下:

  • 第一步:用Web活动直接调用登录API,获取XML格式响应
  • 第二步:使用ADF内置的xpath函数直接从Web活动输出中提取所需字段,针对你提供的带命名空间的XML,推荐用local-name()绕过命名空间配置,三个目标字段的提取写法示例:
    • 提取所有sp节点的id属性:xpath(xml(activity('调用登录接口的Web活动名称').output), '//*[local-name()="sp"]/@id')
    • 提取对应sp下的mac_add字段值:xpath(xml(activity('调用登录接口的Web活动名称').output), '//*[local-name()="sp"]/*[local-name()="mac_add"]/text()')
    • 提取对应sp下的interface字段值:xpath(xml(activity('调用登录接口的Web活动名称').output), '//*[local-name()="sp"]/*[local-name()="id"]/*[local-name()="interface"]/text()')
  • 第三步:如果存在多个sp节点需要逐个处理,直接将xpath返回的数组作为ForEach活动的输入项,循环内每一轮获取当前的sp id、mac_add、interface参数,直接作为入参传给调用下一个API的Web活动即可。
方案2:XML已存入Data Lake的提取方法

如果你需要保留现有存储XML的流程,可以用以下方法提取字段:

  • 第一步:新增Lookup活动,数据源选择你存储在Data Lake中的XML文件,对应数据集选择XML格式,在数据集的解析配置中指定解析层级到sp节点,勾选「返回所有行」即可一次性拿到所有结构化的目标字段
  • 第二步:Lookup活动运行完成后,通过@activity('Lookup活动名称').output.value即可获取包含所有sp id、mac_add、interface字段的数组,可直接赋值给管道变量,或者传入ForEach活动循环调用后续API。
补充说明
  • 单个sp节点下存在多个interface值时,xpath会返回数组格式,你可以根据业务需要按索引取指定值,或者全部遍历处理
  • 提取的字段需要类型转换时,直接用int()、string()等内置函数包裹即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:06:03