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

时间:2019-04-02 01:49:12

标签: sql-server xml azure-logic-apps

我正在尝试使用Logic Apps完成过去使用Pentaho所做的事情。我想构建一个具有Recurrence触发器的Logic App,该触发器将启动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连接器,它们是否是免费产品或某些付费软件包的一部分?

在此先感谢您获得帮助。

1 个答案:

答案 0 :(得分:0)

如果在解析后也将XML转换为JSON对象,则更加简单。这两个功能都可以通过使用xmljson函数来实现。

此外,由于您知道XML的格式,因此您也将了解转换后的JSON的格式,并允许您使用Parse JSON操作来获取简单的令牌,以在Logic App的其余部分中使用。< / p>

然后您可以直接在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"
            }
        }
    }
}