在逻辑应用程序中将相同结构的多个XML文件合并为单个XML [英] Merge multiple XML files of same structure into single xml in logic apps

查看:21
本文介绍了在逻辑应用程序中将相同结构的多个XML文件合并为单个XML的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  1. 从ftp服务器位置我的逻辑应用程序正在获取压缩文件夹,该文件夹可以包含包含"N"no。示例结构的XML文件

  2. 我能够通过将其解析为JSON来读取for-each循环中的XML文件的内容

3.现在,我希望我的Logic App将JSON中的多个XML文件合并为单个XML文件

请建议如何实现上述第3点。我有集成帐户来存储映射文件。

输入文件1:-

 <?xml version="1.0"?>
<orderQuote>
    <order_id>AZS000001</order_id>
    <user_request>
        <app_user>
            <username>varunxxxxxxxxxxxx</username>
            <user_first_name>Varun</user_first_name>
            <user_last_name>Thakur</user_last_name>
            <user_email>varunthakur84@hotmail.com</user_email>          
        </app_user>

    </user_request>

    <quote_id>345678</quote_id>
    <rate_id>ABC001</rate_id>
  <contract_id>SR_ABC_XYZ</contract_id>
    <amendment_id>2019062401</amendment_id>
    <price> 10</price>
  <rate_effective_date>01-Jul-2019</rate_effective_date>
    <rate_expiration_date>30-Sep-2019</rate_expiration_date>
    <origin_trade></origin_trade>
    <destination_trade></destination_trade>
    <origin_city>Haiphong</origin_city>
    <origin_country>VIETNAM</origin_country>
    <destination_city>Atlanta</destination_city>
    <destination_country>USA</destination_country>
    <ordermentType>XYZ</ordermentType>
    <ordermentSize>XYZ</ordermentSize>
    <ordermentSizeType>DC</ordermentSizeType>
    <currency>USD</currency>
    <order_dt>17-Sep-2019</order_dt>
    <customer>CompanyName RM Team</customer>
    <quote_creation_dt>17-Sep-2019</quote_creation_dt>

</orderQuote>

输入文件2:-

 <?xml version="1.0"?>
<orderQuote>
    <order_id>AZS000001</order_id>
    <user_request>
        <app_user>
            <username>varunxxxxxxxxxxxx</username>
            <user_first_name>Varun</user_first_name>
            <user_last_name>Thakur</user_last_name>
            <user_email>varunthakur84@hotmail.com</user_email>          
        </app_user>

    </user_request>

    <quote_id>8975545</quote_id>
    <rate_id>ABC002</rate_id>
  <contract_id>SR_A83Z</contract_id>
    <amendment_id>20134362401</amendment_id>
  <price>60</price>
  <rate_effective_date>01-JAJ-2019</rate_effective_date>
    <rate_expiration_date>30-DEC-2019</rate_expiration_date>
    <origin_trade></origin_trade>
    <destination_trade></destination_trade>
    <origin_city>Haiphong</origin_city>
    <origin_country>VIETNAM</origin_country>
    <destination_city>Atlanta</destination_city>
    <destination_country>USA</destination_country>
    <ordermentType>XYZ</ordermentType>
    <ordermentSize>XYZ</ordermentSize>
    <ordermentSizeType>DC</ordermentSizeType>
    <currency>USD</currency>
    <order_dt>17-Sep-2019</order_dt>
    <customer>CompanyName RM Team</customer>
    <quote_creation_dt>17-Sep-2019</quote_creation_dt>

</orderQuote>

预期输出文件

 <?xml version="1.0"?>
<orderQuote>
  <order_id>AZS000001</order_id>
  <user_request>
    <app_user>
      <username>varunxxxxxxxxxxxx</username>
      <user_first_name>Varun</user_first_name>
      <user_last_name>Thakur</user_last_name>
      <user_email>varunthakur84@hotmail.com</user_email>
    </app_user>

  </user_request>

  <quotationCollection>
    <quotation>
      <quote_id>8975545</quote_id>
      <rate_id>ABC002</rate_id>
      <contract_id>SR_A83Z</contract_id>
      <amendment_id>20134362401</amendment_id>
      <price>60</price>
      <rate_effective_date>01-JAJ-2019</rate_effective_date>
      <rate_expiration_date>30-DEC-2019</rate_expiration_date>
      <origin_trade></origin_trade>
      <destination_trade></destination_trade>
      <origin_city>Haiphong</origin_city>
      <origin_country>VIETNAM</origin_country>
      <destination_city>Atlanta</destination_city>
      <destination_country>USA</destination_country>
      <ordermentType>XYZ</ordermentType>
      <ordermentSize>XYZ</ordermentSize>
      <ordermentSizeType>DC</ordermentSizeType>
      <currency>USD</currency>
      <order_dt>17-Sep-2019</order_dt>
      <customer>CompanyName RM Team</customer>
      <quote_creation_dt>17-Sep-2019</quote_creation_dt>
    </quotation>
    <quotation>
      <quote_id>345678</quote_id>
      <rate_id>ABC001</rate_id>
      <contract_id>SR_ABC_XYZ</contract_id>
      <amendment_id>2019062401</amendment_id>
      <price> 10</price>
      <rate_effective_date>01-Jul-2019</rate_effective_date>
      <rate_expiration_date>30-Sep-2019</rate_expiration_date>
      <origin_trade></origin_trade>
      <destination_trade></destination_trade>
      <origin_city>Haiphong</origin_city>
      <origin_country>VIETNAM</origin_country>
      <destination_city>Atlanta</destination_city>
      <destination_country>USA</destination_country>
      <ordermentType>XYZ</ordermentType>
      <ordermentSize>XYZ</ordermentSize>
      <ordermentSizeType>DC</ordermentSizeType>
      <currency>USD</currency>
      <order_dt>17-Sep-2019</order_dt>
      <customer>CompanyName RM Team</customer>
      <quote_creation_dt>17-Sep-2019</quote_creation_dt>
    </quotation>
  </quotationCollection>
</orderQuote>

推荐答案

由于您要合并多个xml(Json)文件的部分内容,而您的示例很复杂,因此我对它们进行了简化。

您的要求相当于合并XML文件

<orderQuote>
    <order_id>AZS000001</order_id>
    <quote_id>345678</quote_id>
    <rate_id>ABC001</rate_id>
</orderQuote>

<orderQuote>
    <order_id>AZS000001</order_id>
    <quote_id>8975545</quote_id>
    <rate_id>ABC002</rate_id>
</orderQuote>

<orderQuote>
  <order_id>AZS000001</order_id>

  <quotationCollection>
    <quotation>
      <quote_id>8975545</quote_id>
      <rate_id>ABC002</rate_id>
    </quotation>
    <quotation>
      <quote_id>345678</quote_id>
      <rate_id>ABC001</rate_id>
    </quotation>
  </quotationCollection>
</orderQuote>

对于这个需求,我首先初始化四个变量(变量"isFirstTime"用于判断它是否是For Each中的第一个循环)。

然后我连接到ftp并将从ftp获得的XML文件解析为json格式。

接下来,我用"order_id"设置变量值(在此步骤中,您可能需要设置其他一些变量,如"username"、"user_first_name".....)

下一步,我创建一个"if"条件来执行不同的工作。

在"for each"循环的底部,我们需要将变量"isFirstTime"设置为FALSE。

完成"for each"循环后,我们还有最后两个步骤。 "FX Concat(...)"的表达是

concat(concat(concat(concat('{"orderQuote":{"order_id":"', variables('order_id')), '","quotationCollection":['), variables('jsonstring')), ']}}')

之后,我们可以得到json格式的结果文件。

{
  "orderQuote": {
    "order_id": "AZS000001",
    "quotationCollection": [
      {
        "quotation": {
          "quote_id": "345678",
          "rate_id": "ABC001"
        }
      },
      {
        "quotation": {
          "quote_id": "8975545",
          "rate_id": "ABC002"
        }
      }
    ]
  }
}

顺便说一下,我们最好在使用"for Each"循环之前做一些设置,点击"…""For Each"操作旁边的图标-->单击"设置",然后启用"并发控制",并将"并行度"更改为1。

这篇关于在逻辑应用程序中将相同结构的多个XML文件合并为单个XML的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆