将 XML 个文件转换为 JSON 或 CSV?

Converting XML files to JSON or CSV?

我有包含嵌套元素的复杂 XML 文件。我构建了一个流程来处理使用 SSIS 和 T-SQL。我们利用 Azure 数据工厂,我想探索将 XML 文件转换为 JSON 或 CSV,因为 ADF 支持这些文件,而 XML 不支持。

逻辑应用似乎是一种选择。有没有人有其他幸运的 XML 并在管道内转换?

当前工作流程: 从文件夹中提取 XML 文件,放到网络驱动器上,批量插入 XML 到暂存行,将 XML 解析为各种 SQL 表以供分析。

样本:

<HEADER>
<SurveyID> 1234 </SURVEYID>
  <RESPONSES>
      <VAR>Question1</VAR>
      <VALUE>Answer1</VALUE>
  </RESPONSES>
  <RESPONSES>
      <VAR>Question2</VAR>
      <VALUE>Answer2</VALUE>
  </RESPONSES>
<SurveyID> 1234 </SURVEYID>
 <RESPONSES>
      <VAR>Question1</VAR>
      <VALUE>DifferentAnswer</VALUE>
  </RESPONSES>
</HEADER>

注意:我不需要知道如何解析 XML,已经完成了。我还知道您可以在 ADF 中执行 SSIS。我正在寻找整个过程的替代方案。

我不确定为什么这个问题被否决了 - 几个月前我也有类似的需求。由于我们收到的 XML 格式不正确,甚至无法正确解析,这一事实加剧了这种情况。为了解决这个问题,我编写了一个 .NET 控制台应用程序并将其部署到 Azure Batch。它从 Blob 存储中读取 XML,更正格式错误,然后解析 XML 并将其输出到 Blob 存储中的 JSON 文件。 ADF 通过“自定义”activity 支持 Azure Batch,因此它可以直接插入我们的管道。根据您的数据结构,如果更合适,您可以将其输出为 CSV。

从 ADF 使用 Azure Batch 的棘手之处在于传递和处理参数数据。在 ADF 配置中,这些列在“扩展属性”下:

批处理作业在 运行 时在名为“activity.json”的 JSON 文件中可用:在控制台应用程序中,您需要访问 JSON 文件读取扩展属性:

var activity_json = File.ReadAllText("activity.json");
dynamic activity = JsonConvert.DeserializeObject(activity_json);
            
parameters.Add("alertId", activity.typeProperties.extendedProperties.AlertId.ToString());
parameters.Add("hashKey", activity.typeProperties.extendedProperties.HashKey.ToString());
parameters.Add("startTime", activity.typeProperties.extendedProperties.StartTime.ToString());
parameters.Add("endTime", activity.typeProperties.extendedProperties.EndTime.ToString());

属性 名称区分大小写。 [请注意,在这个例子中,我将它们写入“参数”字典 - 我这样做是为了 运行 本地或 Azure Batch 中的控制台应用程序。] 还有一些其他“有趣”的方面可以使用Azure Batch,但我认为这是最大的障碍。