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

如何在ADF中从Web活动输出的XML提取所有Name值?

Azure Data Factory提取XML中所有Name值到数组变量

问题场景

Web活动返回如下格式的输出,其中Response字段为XML字符串:

{
    "Response": "<?xml version = 'xyz'?>
                 <Head>
                      <Blobs>
                             <Blob>
                                  <Name>Max</Name>
                                  <location>USA</location>
                             </Blob>
                             <Blob>
                                  <Name>Robert</Name>
                                  <location>UK</location>
                             </Blob>
                             <Blob>
                                  <Name>Nick</Name>
                                  <location>USA</location>
                             </Blob>
                       </Blobs>
                  </Head>",
    "Json1": {
        "Json1_1": "value",
        "Json1_1": "value",
        "Json1_1": "value"
    },
    "Json2": "value",
    "Json3": 0,
    "Json4": {
        "json4_1": 0
    }
}

需要提取XML中所有<Name>节点的值到数组类型变量,但使用表达式@xpath(xml(activity('Web1').output.Response), 'string(//Name)')仅返回第一个Name值(Max),无法满足需求。

解决方案

使用xpath获取所有匹配的节点集合,再通过map函数将每个节点转换为文本值,最终生成数组:

正确表达式

@map(xpath(xml(activity('Web1').output.Response), '//Name'), function(x) { string(x) })

逻辑说明

  1. xml(activity('Web1').output.Response):将Response字段的XML字符串转换为XML对象
  2. xpath(..., '//Name'):查询所有匹配<Name>的节点,返回节点集合
  3. map(..., function(x) { string(x) }):遍历节点集合,将每个节点转换为对应的文本值,生成包含所有Name值的数组

执行结果

设置变量类型为数组后,执行Set Variable活动将得到数组:["Max", "Robert", "Nick"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 21:20:51