逻辑应用程序 - 从Web服务读取XML响应并将解析后的数据存储在数据库中

问题描述 投票:0回答:1

我正在尝试使用Logic Apps来完成我过去与Pentaho所做的事情。我想构建一个带有重复触发器的逻辑应用程序,它启动HTTP步骤以发布到Web服务并接收XML回复。我想解析XML回复(已知格式)并将结果存储在Azure SQL Server数据库中。

我已经成功测试了HTTP步骤并收到了回复XML。我在SQL数据库中完成了目标表。我不知道如何使用Logic Apps将XML回复解析为CSV格式,我可以将其传递给SQL查询以输入新的表格行。

我已经浏览了几个教程和其他线程,但这些步骤要么承担比我拥有的更高级别的经验,要么是Logic Apps的基本介绍。

我认为听到以下内容会很有帮助:

  1. 这比我预期的更具挑战性吗?我很擅长使用SQL,Pentaho,R和其他工具,但对HTTP调用/响应有点新,而且XML经验很少。
  2. 我应该考虑哪些Logic Flow连接器,它们是免费产品或一些付费套餐的一部分?

提前感谢任何帮助入门。

sql-server xml azure-logic-apps
1个回答
0
投票

如果在解析之后将XML转换为JSON对象,则会更加简单。这两个都可以通过使用xmljson函数来完成。

此外,由于您了解XML的格式,因此您将了解转换后的JSON的格式,并允许您使用Parse JSON操作来获取在逻辑应用程序的其余部分中使用的简单令牌。

然后,您可以直接在SQL查询中使用这些令牌。

这是一个逻辑应用程序,显示这种情况(没有SQL和HTTP步骤)

Logic App Designer View

及其定义要清楚

{
    "definition": {
        "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
        "actions": {
            "CSV_Data": {
                "inputs": {
                    "variables": [
                        {
                            "name": "random_data_csv",
                            "type": "String",
                            "value": "@{body('Parse_JSON')?['data']?['name']},@{body('Parse_JSON')?['data']?['awesome']}"
                        }
                    ]
                },
                "runAfter": {
                    "Parse_JSON": [
                        "Succeeded"
                    ]
                },
                "type": "InitializeVariable"
            },
            "Parse_JSON": {
                "inputs": {
                    "content": "@json(xml(variables('random_data_xml')))",
                    "schema": {
                        "properties": {
                            "data": {
                                "properties": {
                                    "awesome": {
                                        "type": "string"
                                    },
                                    "name": {
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        },
                        "type": "object"
                    }
                },
                "runAfter": {
                    "XML_Data": [
                        "Succeeded"
                    ]
                },
                "type": "ParseJson"
            },
            "XML_Data": {
                "inputs": {
                    "variables": [
                        {
                            "name": "random_data_xml",
                            "type": "String",
                            "value": "<data>\n<name>Azure Logic Apps</name>\n<awesome>true</awesome>\n</data>"
                        }
                    ]
                },
                "runAfter": {},
                "type": "InitializeVariable"
            }
        },
        "contentVersion": "1.0.0.0",
        "outputs": {},
        "parameters": {},
        "triggers": {
            "manual": {
                "inputs": {
                    "schema": {}
                },
                "kind": "Http",
                "type": "Request"
            }
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.