逻辑应用程序/服务总线/ Xml解析

时间:2018-03-16 10:17:48

标签: xml azureservicebus azure-logic-apps

我在使用Azure逻辑应用程序中的xml消息时遇到问题。我读了很多关于类似问题的帖子,但不知何故它对我不起作用: - )

我的情况:

我从逻辑应用程序向服务总线发布xml消息。看起来消息只能在Base64编码时发送到主题。所以我使用以下内容:

                    "ContentData": "@{base64(outputs('Compose_first_XML_message'))}",
                    "ContentType": "Application/xml"

请注意,内容已包含此格式:

"$content-type": "application/xml;charset=utf-8",
"$content": "PG5zMjpNZXRlb0RhdGEgeG1sbnM6bnMyPSJodHRwOi8vR2R...

执行此操作后,我看到消息已发送到Service Bus主题。 Service Bus Explorer工具显示此MessageText:

[{"$content-type":"application/xml;charset=utf-8","$content":"PG5zMjpNZXRlb0RhdGEgeG1sbnM6bnMyPSJodHRwOi8vR2RmLkNvcmUuU2NoZW1hcy5NZXRlb0RhdGEudjEwMCI+DQogIDxJZD5aTV9USV9PVVRTSURFPC9JZD4NCiAgPFZhbHVlPjkuOTwvVmFsdWU+DQogIDxUaW1lU3RhbXA+MTQtTUFSLTIwMTggMTE6MTA6MDA8L1RpbWVTdGFtcD4NCiAgPG5zMTpNZXRhSW5mbyB4bWxuczpuczE9Imh0dHA6Ly9HZGYuQ29yZS5TY2hlbWFzLk1ldGFJbmZvLnYxMDIiPg0KICAgIDxTb3VyY2VTeXN0ZW0+R3NlcG4uZXh0LldlYldlYXRoZXJTdGF0aW9uPC9Tb3VyY2VTeXN0ZW0+DQogICAgPFNvdXJjZVN..."}]

然后我有另一个逻辑应用程序,由此主题上的消息触发。我想执行Xml转换操作。此操作的输入代码为:

 "content": "@{xml(base64toString(triggerBody()?['ContentData']))}"

导致此错误:

InvalidTemplate。无法在操作中处理模板语言表达式' Transform_XML'输入线#1;'和列' 2610':'模板语言功能' xml'参数无效。提供的值无法转换为XML:'根级别的数据无效。第1行,第1位。'。有关使用详情,请参阅https://aka.ms/logicexpressions#xml。'。

感谢阅读;-) 我在这做错了什么......?

2 个答案:

答案 0 :(得分:0)

您使用Transform_XML形状吗?您不需要转换为XML,只需传递内容:

"content": "@{base64toString(triggerBody()?['ContentData'])}"

答案 1 :(得分:0)

好的,解决了它:

"@xml(base64ToString(json(base64ToString(triggerBody()?['ContentData']))[0].$content))"