如何在Azure Logic应用程序中处理XML

如何在Azure Logic应用程序中处理XML,xml,azure,azure-logic-apps,Xml,Azure,Azure Logic Apps,我将从我们期待的行为开始: 接收一个文件(可以是JSON或XML,但现在我们更喜欢XML,尽管我们可以控制它) 解析它以找到文件的“类型” 转换文件以匹配几种不同的XML格式之一 将其发送到预先确定的端点并返回给调用者 我们最初的研究表明,使用Azure logic应用程序的BizTalk很适合这种情况,但现在我正在进行概念验证,我遇到了一些障碍,即: 最新版本的Azure(2015-08-01-preview)似乎不支持BizTalk 我在我读过的一篇文章的评论部分读到了这篇文章,但现在找

我将从我们期待的行为开始:

  • 接收一个文件(可以是JSON或XML,但现在我们更喜欢XML,尽管我们可以控制它)
  • 解析它以找到文件的“类型”
  • 转换文件以匹配几种不同的XML格式之一
  • 将其发送到预先确定的端点并返回给调用者
  • 我们最初的研究表明,使用Azure logic应用程序的BizTalk很适合这种情况,但现在我正在进行概念验证,我遇到了一些障碍,即:

    • 最新版本的Azure(2015-08-01-preview)似乎不支持BizTalk
      • 我在我读过的一篇文章的评论部分读到了这篇文章,但现在找不到参考资料,这是真的吗
    • 不支持解析XML(在我读过的100篇文章中,我读到了非JSON请求被视为无法在逻辑应用程序中解析的二进制文件),这意味着我们必须将现有XML转换为JSON才能调用Azure,而只能将其转换回XML
    我已经能够创建一个逻辑应用程序,公开一个端点,用一个JSON主体调用它,让逻辑应用程序解析JSON并有条件地执行操作,一旦我弄明白了如何完成所有这些,它就给人留下了深刻的印象

    所以我的问题有两个:

  • 我们的情况适合Azure逻辑应用程序(或者可能是不同类型的Azure应用程序)吗
  • 如果是这样,BizTalk是否是将文件转换为所需输出XML格式的正确方法?
  • 从我在网上看到的情况来看,在VS 2015中没有创建BizTalk转换文件的方法?


  • 我们最近发布了用于逻辑应用程序的[Enterprise Integration Pack](EIP)预览版。作为本版本的一部分,Logic应用程序中添加了一系列xml处理功能

  • [JSON to XML]反之亦然:您可以使用Logic Apps定义中本机可用的JSON()和XML()函数
  • XML转换:现在可以使用基于XSLT1.0的新操作
  • 除此之外,逻辑应用程序还具有HTTP请求/响应功能,可用于调用HTTP端点

    希望这有帮助

    谢谢,
    Vinay

    您还可以使用带有NewtonSoft(JSON.net)的函数应用程序。逻辑应用程序是惊人的,但他们不是三明治和芯片。。。至少还没有

    您应该能够在逻辑应用程序中嵌套函数应用程序。使用NewtonSoft(函数应用程序中)支持解析XML>JSON、JSON>XML

  • 接收XML POST请求
  • 转换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>
    
  • 解析JSON-使用内容体(“将XML转换为JSON”)
  • HTTP响应-将希望返回的值设置为body('Parse_JSON')['Value']到body中

    <Header>
    <Something>
    <value = "body('Parse_JSON')['Value']"/>
    </Something>
    </Header>
    
    
    
  • 您还可以使用此创建blob并发送到数据工厂


  • 这个解决方案怎么样@wuerzelchen这就是我提到的BizTalk解决方案:您无法在VS 2015中创建映射,而且Azure的最新架构版本似乎不支持它。您正在避免更大的问题,即:XML已死。不要用它。越来越多的在线服务都希望使用JSON,而保留类似恐龙的XML目前可能适合您,但这不是未来的一种格式。取决于你的应用程序的生命周期,我将简单地转到JSON并完成它。@PedroG.Dias我们正在处理一个高度监管的行业,无论我们的输入格式如何(我们在内部处理JSON很好,实际上更喜欢它),我们需要生成XML来满足第三方的要求。@MickyD我们放弃了Azure,在内部开发了逻辑应用程序EIP XSLT是否支持BizTalk.TRFM文件的所有功能?否则就没用了
    <Header>
    <Something>
    <value = "body('Parse_JSON')['Value']"/>
    </Something>
    </Header>