如何在Azure Logic App中处理XML

时间:2016-03-22 12:24:12

标签: xml azure azure-logic-apps

我将从我们希望的行为开始:

  1. 接受一个文件(无论是JSON还是XML,但是现在我们更喜欢XML,尽管我们可以控制它),
  2. 解析它以找到文件的“类型”
  3. 转换文件以匹配几种不同的XML格式之一
  4. 将其发送到预先确定的端点并返回给主叫方
  5. 我们最初的研究表明,使用Azure逻辑应用程序的BizTalk似乎非常适合这一点,但现在我正在研究概念验证,我遇到了障碍,即:

    • 最新版Azure中似乎不支持BizTalk(2015-08-01-预览版)
      • 我在我读过的一篇文章的评论部分看到了这个,但现在找不到参考,这是真的吗?
    • 不支持解析XML(我在我读过的100篇文章的one中读到非JSON请求被视为无法在逻辑应用程序中解析的二进制文件),这意味着我们必须将我们现有的XML转换为JSON以调用Azure,只将其转换回XML

    我已经能够创建一个逻辑应用程序,公开一个端点,用JSON主体调用它,并让逻辑应用程序解析JSON并有条件地执行操作,一旦我弄清楚如何做到这一切,这真是令人印象深刻。

    所以我的问题是双重的:

    1. 我们的情况是Azure Logic App(或者可能是不同类型的Azure应用程序)的良好候选者吗?
    2. 如果是这样,BizTalk是将文件转换为所需输出XML格式的正确方法吗?
      1. 从我在网上看到的,没有办法在VS 2015中创建BizTalk转换文件?
          

        BizTalk server projects are not compatible with Visual Studio 2015 or Visual Studio 2013.

3 个答案:

答案 0 :(得分:1)

我们最近为Logic Apps发布了[Enterprise Integration Pack](EIP)的预览版。作为此版本的一部分,Logic Apps中添加了许多xml处理功能。

  1. [JSON to XML],反之亦然:您可以使用Logic Apps定义中原生提供的json()和xml()函数。
  2. XML转换:您现在可以使用基于XSLT 1.0的新XML Transform操作。
  3. 除此之外,Logic Apps还具有HTTP请求/响应功能,可用于调用HTTP端点。

    希望这有帮助。

    谢谢, Vinay

答案 1 :(得分:1)

  1. 接收XML POST请求。
  2. 转换XML。 -将内容用作triggerBody()并使用XSLT进行映射。您可以在此处设置XML格式。

    <?xml version='1.0'?>
    <xsl:stylesheet version="1.0">
    <xsl:template match="/">
    <Header>
    <Something>
    <xsl:value-of select="soap-env:Envelope/soap-env:Body/a:Something/@value"/>
    </Something>
    </Header>
    </xsl:template>
    </xsl:stylesheet>
    
  3. 将XML转换为JSON-使用内容主体('transform_XML')并使用XML映射到Json。

    {"Something": "{{content.Something.Value}}"
    
  4. 解析JSON-使用内容主体('transform_XML_to_JSON')
  5. HTTP响应-将要作为主体('Parse_JSON')['Value']返回的值设置为主体。

    <Header>
    <Something>
    <value = "body('Parse_JSON')['Value']"/>
    </Something>
    </Header>
    
  6. 您还可以以此创建Blob并将其发送到数据工厂。

答案 2 :(得分:0)

您还可以使用带有NewtonSoft(JSON.net)的Function App。 Logic Apps很棒,但它们还不是三明治和芯片……至少还不是。

您应该能够将功能应用程序嵌套在逻辑应用程序中。使用NewtonSoft(在Function App中)支持解析XML> JSON,JSON> XML