Azure LogicApp 集成中的映射文件

Map file in the Integration for the LogicApp in Azure

作为 B2B 供应商的 HTTP GET 函数的结果,具有以下 XML。

<Invoices xmlns="http://gateway.com/schemas/Invoices" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://gateway..com/schemas/Invoices Invoices.xsd">
   <DocumentInfo>
      <DocType>INVOICES</DocType>
      <DocVersion>2.0</DocVersion>
   </DocumentInfo>
   <Header>
      <StartDate>2018-12-01T00:00:00+01:00</StartDate>
      <EndDate>2019-01-03T00:00:00+01:00</EndDate>
   </Header>
   <Documents>
      <Invoice InvoiceId="RP82807" InvoiceDate="2019-01-02T00:00:00+01:00" DocumentType="IN" RefDocId="FT34532" RefDocType="ORDER" SystemId="10" HasPDFImage="0" />
      <Invoice InvoiceId="T609881" InvoiceDate="2018-12-31T00:00:00+01:00" DocumentType="IN" RefDocId="FT39339" RefDocType="ORDER" SystemId="0" HasPDFImage="0" />
   </Documents>
</Invoices>

基于 this article 我创建了液体映射文件来获取 InvoiceIds 列表:

{
"Invoice": "{{content.Documents.Invoice}}"
}

在XML->Json转换器的LogicApp中使用时,得到如下结果:

{
    "Invoice": ""
} 

我也尝试过将其作为液体文件:

{
"Invoice": "{{content.Invoices.Documents}}"
} 

还有这个:

{
"Invoice": "{{content.Invoices.Documents.Invoice}}"
}

同样的结果。 你能告诉我我做错了什么吗?

我试图用这张地图将你的 xml 文件的一部分传输到 json:

{
"DocType":"{{content.DocumentInfo.DocType}}",
"Invoice":"{{content.Documents.Invoice}}"
}

并得到输出:

{
"DocType": "INVOICES",
"Invoice": ""
}

所以这意味着我可以获得 DocType 但无法获得 Invoice 属性,所以我认为 Liquid 地图可能没有不支持 XML 格式。或许你可以将它改成这样:

<Invoice>
<InvoiceId>T609881</InvoiceId>
  <InvoiceDate>2018-12-31T00:00:00+01:00</InvoiceDate>
  <DocumentType>IN</DocumentType>
  <RefDocId>FT39339</RefDocId>
</Invoice>

这会起作用,或者您可以转到 Liquid reference 检查是否有任何方法可以匹配这些属性。

注意:你现在想要的,绑定到Xml属性目前还没有supported.You可以参考这个answer.

如果您还有其他问题,请告诉我。

更新:您仍然可以使用逻辑应用程序来做到这一点。 例如,我使用 FTP 连接器来获取 xml 文件内容,然后创建一个 json 和 "json(xml(body('Get_file_content')))" 表达式。

这就是结果。