在逻辑应用程序中将相同结构的多个XML文件合并为单个XML [英] Merge multiple XML files of same structure into single xml in logic apps
本文介绍了在逻辑应用程序中将相同结构的多个XML文件合并为单个XML的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
从ftp服务器位置我的逻辑应用程序正在获取压缩文件夹,该文件夹可以包含包含"N"no。示例结构的XML文件
我能够通过将其解析为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屋!
查看全文