Azure中LogicApp集成中的映射文件

时间:2019-01-04 23:51:44

标签: json xml azure integration azure-logic-apps

由于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}}"
}

具有相同的结果。 你能给我一个小提示我做错了什么吗?

1 个答案:

答案 0 :(得分:0)

我尝试使用此地图将您的xml文件的一部分传输到json:

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

并获得输出:

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

所以这意味着我可以获取 DocType ,但不能获取发票属性,因此我认为Liquid映射不支持XML格式。也许您可以将其更改为这样:

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

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

enter image description here

注意:暂时不支持绑定到Xml属性。您可以参考此answer

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

更新:您仍然可以使用逻辑应用。例如,我使用FTP连接器获取xml文件内容,然后使用“ json(xml(body('Get_file_content')) )”表达式。 enter image description here

这就是结果。 enter image description here