将 XML 文件转换为 JSON 或 CSV?

2023-11-27

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

看来逻辑应用程序是一种选择。还有人在获取 XML 并在管道中进行转换方面有其他运气吗?

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

Sample:

<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 通过“自定义”活动支持 Azure Batch,因此它可以直接插入我们的管道。根据您的数据结构,如果更合适,您可以将其输出为 CSV。

The tricky bits of using Azure Batch from ADF are in passing and processing parameter data. In the ADF configuration, these are listed under "Extended properties": enter image description here

这些属性可在运行时在名为“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 还有一些其他“有趣”的方面,但是我认为这是最大的障碍。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 XML 文件转换为 JSON 或 CSV? 的相关文章

随机推荐

  • Maven Surefire 插件skipAfterFailureCount 配置不起作用

    当其中一个失败时 我想停止测试执行 我尝试了 pom xml 中的skipAfterFailureCount配置并且mvn Dsurefire skipAfterFailureCount 1作为命令行参数但仍然没有效果 有没有明确的方法来做
  • 如何使 SQL Developer/SQL+ 对于在单个语句中多次出现的替换变量仅提示一次?

    我有一个查询大致是这样的 select from A TABLE where A COLUMN aVariable union select from A TABLE where B COLUMN aVariable 但是当我运行它时 SQ
  • 无法访问非静态字段

    我不明白为什么它要寻找静态的东西 public class DatabaseBase private readonly string connectionString public DatabaseBase string connectio
  • ANT:使用条件标签,

    我想做这样的事情
  • 对象名称前的单下划线和双下划线的含义是什么?

    Python 中对象名称前的单下划线和双下划线代表什么 单下划线 在类中 带有前导下划线的名称向其他程序员表明该属性或方法旨在在该类内部使用 然而 隐私并不enforced以任何方式 在模块中的函数中使用前导下划线表示不应从其他地方导入它
  • 如何使用 dotnetzip 检查 zip 文件中是否存在文件

    我正在使用 dotnetzip 库创建 zip 但我不知道如何检查 zip 中是否存在文件 如果该文件存在 那么我将使用路径更新该文件 public void makezip string flname string fln flname
  • 测试是否未给出位置参数的惯用方法?

    如果没有给出位置参数 Bash 中测试最惯用的方法是什么 有很多方法可以检查这一点 我想知道是否有一种首选方法 一些方法是 check if is not true 0 is 0 is unset or null 对我来说 经典的方法是 e
  • 从 Linux 中的 C/C++ 程序发送电子邮件

    我想在每次模拟结束时向我的 Gmail 帐户发送一封电子邮件 我尝试在网上搜索并发现发电子邮件但已经超时了 如果有人能向我指出他们尝试过的包或链接 我将不胜感激 Thanks 您可以直接使用调用本地 MTApopen 并向其提供符合 RFC
  • 如何使用 SIFT/SURF 作为机器学习算法的特征?

    我正在研究自动图像注释问题 其中我试图将标签与图像相关联 为此 我尝试使用 SIFT 特征进行学习 但问题是所有的 SIFT 特征都是一组关键点 每个关键点都有一个二维数组 而且关键点的数量也很大 我的学习算法通常只接受一个 有多少个以及如
  • Angular 2:将依赖项注入@CanActivate?

    在 Angular 2 中 你可以指定一个 CanActivate组件的注释 您可以在其中确定是否应激活该组件 它不是接口的原因是因为回调在组件实例化之前被调用 问题是 我无法找到一种方法将依赖项注入到该回调中 我需要我的服务告诉我是否已登
  • 未找到 Heroku 资产 404

    我们正在处理一个问题 即我们的资产在 slug 编译期间编译时没有任何问题 然而 从昨天开始 在推送到我们的暂存和生产应用程序后 我们现在遇到了浏览器指示资产由于某种原因无法加载的问题 使用浏览器开发工具我们看到此错误 无法加载资源 服务器
  • skimage (Python) 实际如何保存图像

    我目前正在申请张素细化算法为了磨练一些我想稍后追踪的细丝 这需要我输出灰度图像以便使用 OpenCV 识别对象 import matplotlib import matplotlib pyplot as plt import skimage
  • 奇怪的重复模板模式和泛型约束 (C#)

    我想在基泛型类中创建一个方法来返回派生对象的专门集合并对它们执行一些操作 如下例所示 using System using System Collections Generic namespace test class Base
  • 如何在 SQL Server 中将“dd/mm/yyyy”字符串转换为日期时间?

    我试过这个 SELECT convert datetime 23 07 2009 111 但出现这个错误 将 varchar 数据类型转换为 datetime 数据类型导致值超出范围 However SELECT convert datet
  • 如何将行名称添加到 magrittr 链中的数据框

    我想做相反的事情 将行名称转换为第一列 在管道链的某个位置 我想将行名称添加到数据框中 例如 我想使用管道执行以下操作 rownames mtcars lt as character 1 nrow mtcars 使其看起来像 library
  • 如何制作批处理文件来运行热键

    Every time I start my Windows I want to execute a hotkey Ctrl Alt 1 using a batch file and putting it in startup folder
  • “NSURLErrorDomain” - 代码:18446744073709550594 Xcode 7 上的 Ajax 调用

    我尝试从 Xcode 7 进行异步调用 如下所示 最终看到此错误 NSURLErrorDomain 代码 18446744073709550594 当我在 Xcode 6 中使用这段代码时 它没有问题 有其他人看到这个错误吗 var tas
  • 使用indexOf过滤数组

    我正在尝试使用indexOf 输出事件数组中的前两个对象 这不会返回任何内容 var whiteList css js var events file css style css type css file js app js type j
  • 在什么情况下 Windows 关键部分的锁定计数可能为负数?

    Windows 中 RTL CRITICAL SECTION 结构的 LockCount 字段是否可以合法为负数 我们正在跟踪一次非常难以捉摸的崩溃 我们看到的一个症状是 CS 的 LockCount 为负值 崩溃时 计数为 6 但通常似乎
  • 将 XML 文件转换为 JSON 或 CSV?

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