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

能否用Azure Data Factory复制项将嵌套XML映射为嵌套JSON?

将一级嵌套XML转换为带重复数组的JSON(Blob源场景)

这个需求完全可以实现。Copy Activity的默认映射机制无法处理重复XML元素转JSON数组的场景,推荐通过以下两种方案完成转换:

方案一:使用Azure Data Factory Data Flow(无代码/低代码)

步骤1:配置XML源数据集

创建Blob存储的XML数据集,在数据集设置中指定Root element为RootElement,确保数据读取时能正确识别顶层结构。

步骤2:创建Data Flow并接入源

新建Data Flow,添加XML源组件并关联上述数据集,确认数据预览能正确加载所有字段(包括重复的RootRepeatingElement)。

步骤3:用Aggregate转换处理重复元素

添加Aggregate转换:

  • 在Group by区域选择非重复的顶层字段RootChild,以此作为聚合分组依据。
  • 在Aggregate columns区域新增列,命名为RootRepeatingElement,使用表达式collect(RootRepeatingElement)将所有重复的子元素收集为数组。

步骤4:配置JSON目标数据集

创建Blob存储的JSON数据集,设置输出模式为Array of objects,确保最终输出符合目标JSON的结构要求。

步骤5:运行Pipeline

将Data Flow添加到Pipeline中执行,即可生成符合要求的JSON文件。

方案二:Python脚本方案(自定义处理)

如果需要更灵活的控制,可以用Python脚本读取Blob中的XML,解析后转换为目标JSON:

import xmltodict
import json
from azure.storage.blob import BlobServiceClient

# 初始化Blob客户端
conn_str = "你的Blob存储连接字符串"
container_name = "你的容器名称"
blob_service_client = BlobServiceClient.from_connection_string(conn_str)
container_client = blob_service_client.get_container_client(container_name)

# 读取XML文件
input_blob = container_client.get_blob_client("input.xml")
xml_raw = input_blob.download_blob().readall().decode("utf-8")

# 解析XML,强制将指定重复元素转为数组
parsed_data = xmltodict.parse(xml_raw, force_list={"RootRepeatingElement"})

# 提取顶层内容并生成JSON
output_json = json.dumps(parsed_data["RootElement"], indent=2)

# 写入JSON到Blob
output_blob = container_client.get_blob_client("output.json")
output_blob.upload_blob(output_json, overwrite=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 09:58:10