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

ADF Collection Reference单XML记录转JSON失败问题求助

解决方案:ADF Collection Reference处理单条XML转JSON报错问题

问题原因

当XML中仅含单条<row>节点时,ADF将XML转换为JSON后,row会被解析为JSON对象而非数组;多条<row>节点则会被解析为数组。Collection Reference要求配置的JSON路径必须指向数组类型,因此单条记录时路径$['file-data']['files']['row']因指向对象触发UserErrorInvalidPathForCollectionReferenceNode错误。

可行解决方案

方案1:用array()函数强制转数组

直接修改Collection Reference的JSON路径表达式,通过array()函数将目标节点强制转为数组,兼容单/多记录场景:

array($['file-data']['files']['row'])

此方法无需额外组件,快速解决路径不匹配问题。

方案2:Mapping Data Flow预处理

若需更复杂的转换逻辑,可通过Mapping Data Flow处理XML源:

  • 添加Source组件,接入XML数据源
  • 添加Derived Column组件,创建新列(或替换原row列),用表达式toArray(row)将单条对象转为数组
  • 添加Sink组件输出为JSON,后续Collection Reference可正常识别数组路径

方案3:强制XML转JSON的节点类型

在Copy Activity的XML源配置中,通过自定义规则指定<row>节点为数组:
进入源设置的高级JSON配置,添加规则:

{"$['file-data']['files']['row']": {"type": "array"}}

强制该节点解析为数组,避免单条记录时被转为对象。

示例验证

  • 单条XML输入:
<file-data>
  <files>
    <row>
      <id>1</id>
      <name>file1</name>
    </row>
  </files>
</file-data>

使用方案1的路径表达式后,转换后的JSON符合预期:

{
  "file-data": {
    "files": {
      "row": [
        {
          "id": "1",
          "name": "file1"
        }
      ]
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 04:24:56