将XML文件转换为JSON或CSV?

将XML文件转换为JSON或CSV?,xml,azure-logic-apps,azure-data-factory-2,Xml,Azure Logic Apps,Azure Data Factory 2,我有嵌套元素的复杂XML文件。我构建了一个使用SSI和T-SQL处理的流程。我们使用Azure Data Factory,我想探索如何将XML文件转换为JSON或CSV,因为ADF支持这些文件,而XML不支持 逻辑应用程序似乎是一种选择。有没有人在使用XML并在管道中进行转换方面有其他的运气 当前工作流: 从文件夹中提取XML文件,放到网络驱动器上,将XML大容量插入临时行,将XML解析到各种SQL表中进行分析 样本: <HEADER> <SurveyID> 1234 &

我有嵌套元素的复杂XML文件。我构建了一个使用SSI和T-SQL处理的流程。我们使用Azure Data Factory,我想探索如何将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>

1234
问题1
答复1
问题2
答复2
1234
问题1
不同的回答

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

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

从ADF使用Azure批处理的棘手之处在于传递和处理参数数据。在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批处理中运行控制台应用程序。]使用Azure批处理还有一些其他“有趣”的方面,但在我看来,这是最大的障碍。

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

从ADF使用Azure批处理的棘手之处在于传递和处理参数数据。在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批处理中运行控制台应用程序。]使用Azure批处理还有一些其他“有趣”的方面,但这是我认为最大的障碍。

是的,Azure Logic app及其转换XML操作是一个选项。它支持Liquid、XSLT1.0、XSLT2.0或XSLT3.0。XSLT 3.0具有output=“JSON”。令人惊讶的是,Microsoft Azure数据工厂无法处理XML。这是一个明显的疏忽。我知道他们正在努力引入这样的功能。下面是链接:是的,Azure Logic应用程序及其转换XML操作是一个选项。它支持Liquid、XSLT1.0、XSLT2.0或XSLT3.0。XSLT 3.0具有output=“JSON”。令人惊讶的是,Microsoft Azure数据工厂无法处理XML。这是一个明显的疏忽。我知道他们正在努力引入此类功能。以下是链接: