无法在Azure逻辑应用程序中解析具有空内容的xml

时间:2019-01-11 06:47:22

标签: json xml azure azure-logic-apps

我正在获取具有以下结构的XML

<?xml version="1.0" encoding="UTF-8"?>
<Data>
   <datym>
     <bla bla>
   </datym>
   <datym>
     <bla bla>
   </datym>
</Data>

这可以成功解析为json并完成所有工作。有时我得到以下格式的空xml。

<?xml version="1.0" encoding="UTF-8"?>
<Data></data>

但是这无法使用逻辑应用程序解析为xml或json。那么,如果这是可解析的XML或空的XML,我该如何进行验证?我想到了在启动字符串后使用contains()函数,但这对性能造成了巨大影响。

感谢您的想法。

2 个答案:

答案 0 :(得分:1)

我认为您的空xml示例可以解析。我试图将xml文件解析为json文件。这是我的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></DocumentInfo>
<Header></Header>
<Documents></Documents>
</Invoices>

解析后,这是json内容:

{
  "Invoices": {
    "@xmlns": "http://gateway.com/schemas/Invoices",
    "@xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance",
    "@xsi:schemaLocation": 
    "http://gateway..com/schemas/InvoicesInvoices.xsd",
    "DocumentInfo": "",
    "Header": "",
    "Documents": ""
  }
}

所以也许您可以参考我的Logic App流程。我使用xml文件作为显示。

enter image description here

希望这对您有帮助,如果您还有其他问题,请告诉我。

答案 1 :(得分:0)

我实际上找到了解决方法。所以我想我会自己回答,以便将来其他人会觉得有用。

我的方法是使用XPATH。

只需检查第一个节点。如果返回空数组,则返回空数组,否则进行常规处理。

xpath(xml(base64ToString(variables('content'))),'//datym')

xpath(xml(base64ToString(variables('content'))),'//datym[1]')