SOAP XML液体转换的Azure逻辑应用程序问题

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

我正在使用Azure Logic应用程序与旧版SOAP API集成。我想将XML(尤其是响应)转换为更易于使用的内容,例如json。

通常,我在Logic Apps中使用自定义连接器来连接到新的API。我试图为此SOAP创建一个自定义连接器,但是WSDL包含显然不允许的递归引用。我能够使用我们的APIM容器创建托管API,但仍然无法产生任何可让我创建自定义连接器的内容。因此,我开始逐个处理交易。从XML到json的Liquid转换映射似乎是理想的,但是到目前为止,我还没有使用它,即因为我无法弄清楚访问某些XML元素的命名约定(那些ID与它们的ID相同)家长)。目前,我正在使用json(xml())函数作为解决方法,但它似乎不如Liquid map理想。

您可以看到,可以通过常规命名约定轻松访问AgreementId,但是我似乎无法访问第二个RequestReportResponse节点的任何子元素。

这是我要转换的XML:

<SOAP-ENV:Envelope>
   <SOAP-ENV:Header/>
   <SOAP-ENV:Body>
      <RequestReportResponse>
         <MessageHeader>
            <AgreementId>urn:agreementId:</AgreementId>
         </MessageHeader>        
      <RequestReportResponse>
            <Extension>csv</Extension>
            <FileByteArray>xyzFileBytes</FileByteArray>
            <FileName>xyzFileName</FileName>
            <StatusCode>200</StatusCode>
            <StatusDescription>SUCCESS</StatusDescription>
         </RequestReportResponse>
      </RequestReportResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

这是我正在使用的Liquid地图:

{
  "AgreementId": "  {{content.Envelope.Body.RequestReportResponse.MessageHeader.AgreementId}}",
  "FileByteArray": "{{content.Envelope.Body.RequestReportResponse.RequestReportResponse.FileByteArray}}",
  "FileName": "{{content.Envelope.Body.RequestReportResponse.RequestReportResponse.FileName}}",
  "StatusCode": "{{content.Envelope.Body.RequestReportResponse.RequestReportResponse.StatusCode}}",
  "StatusDescription": "{{content.Envelope.Body.RequestReportResponse.RequestReportResponse.StatusDescription}}"
}

预期结果:

{
  "AgreementId": "urn:agreementId:",
  "FileByteArray": "xyzFileBytes",
  "FileName": "xyzFileName",
  "StatusCode": "200",
  "StatusDescription": "SUCCESS"
}

实际结果:

{
  "AgreementId": "urn:agreementId:",
  "FileByteArray": "",
  "FileName": "",
  "StatusCode": "",
  "StatusDescription": ""
}
xml-parsing liquid azure-logic-apps
1个回答
0
投票

似乎Liquid对嵌套的相同标签名称没有很好的支持,我们可以使用xslt来操作xml,然后转换为所需的json。但是对我们来说,最好改进xml资源的格式,以避开嵌套的相同标签名。

© www.soinside.com 2019 - 2024. All rights reserved.