逻辑应用程序/服务总线/Xml 解析
Logic app / Service Bus / Xml parsing
我在 Azure 逻辑应用程序中处理 xml 消息时遇到问题。我读了很多关于类似问题的帖子,但不知何故它对我不起作用:-)
我的情况:
我 post 从逻辑应用到服务总线的 xml 消息。似乎消息只能在 Base64 编码时发送到主题。所以我使用以下内容:
"ContentData": "@{base64(outputs('Compose_first_XML_message'))}",
"ContentType": "Application/xml"
请注意,内容已经采用这种格式:
"$content-type": "application/xml;charset=utf-8",
"$content": "PG5zMjpNZXRlb0RhdGEgeG1sbnM6bnMyPSJodHRwOi8vR2R...
执行此操作后,我看到消息已传送到服务总线主题。 Service Bus Explorer 工具显示此 MessageText:
[{"$content-type":"application/xml;charset=utf-8","$content":"PG5zMjpNZXRlb0RhdGEgeG1sbnM6bnMyPSJodHRwOi8vR2RmLkNvcmUuU2NoZW1hcy5NZXRlb0RhdGEudjEwMCI+DQogIDxJZD5aTV9USV9PVVRTSURFPC9JZD4NCiAgPFZhbHVlPjkuOTwvVmFsdWU+DQogIDxUaW1lU3RhbXA+MTQtTUFSLTIwMTggMTE6MTA6MDA8L1RpbWVTdGFtcD4NCiAgPG5zMTpNZXRhSW5mbyB4bWxuczpuczE9Imh0dHA6Ly9HZGYuQ29yZS5TY2hlbWFzLk1ldGFJbmZvLnYxMDIiPg0KICAgIDxTb3VyY2VTeXN0ZW0+R3NlcG4uZXh0LldlYldlYXRoZXJTdGF0aW9uPC9Tb3VyY2VTeXN0ZW0+DQogICAgPFNvdXJjZVN..."}]
然后我有另一个逻辑应用程序,它由 Topic.I 上的消息触发,想要执行 Xml 转换操作。此操作的输入代码是:
"content": "@{xml(base64toString(triggerBody()?['ContentData']))}"
导致此错误:
模板无效。无法处理行“1”和列“2610”处的操作 'Transform_XML' 输入中的模板语言表达式:“模板语言函数 'xml' 参数无效。提供的值无法转换为 XML:'Data at the root level is invalid. Line 1, position 1.'。请参阅 https://aka.ms/logicexpressions#xml 了解使用详情。'.
感谢阅读 ;-)
我在这里做错了什么...?
您使用 Transform_XML 形状吗?不需要转换成XML,只需要传递内容:
"content": "@{base64toString(triggerBody()?['ContentData'])}"
好的,解决了:
"@xml(base64ToString(json(base64ToString(triggerBody()?['ContentData']))[0].$content))"
我在 Azure 逻辑应用程序中处理 xml 消息时遇到问题。我读了很多关于类似问题的帖子,但不知何故它对我不起作用:-)
我的情况:
我 post 从逻辑应用到服务总线的 xml 消息。似乎消息只能在 Base64 编码时发送到主题。所以我使用以下内容:
"ContentData": "@{base64(outputs('Compose_first_XML_message'))}",
"ContentType": "Application/xml"
请注意,内容已经采用这种格式:
"$content-type": "application/xml;charset=utf-8",
"$content": "PG5zMjpNZXRlb0RhdGEgeG1sbnM6bnMyPSJodHRwOi8vR2R...
执行此操作后,我看到消息已传送到服务总线主题。 Service Bus Explorer 工具显示此 MessageText:
[{"$content-type":"application/xml;charset=utf-8","$content":"PG5zMjpNZXRlb0RhdGEgeG1sbnM6bnMyPSJodHRwOi8vR2RmLkNvcmUuU2NoZW1hcy5NZXRlb0RhdGEudjEwMCI+DQogIDxJZD5aTV9USV9PVVRTSURFPC9JZD4NCiAgPFZhbHVlPjkuOTwvVmFsdWU+DQogIDxUaW1lU3RhbXA+MTQtTUFSLTIwMTggMTE6MTA6MDA8L1RpbWVTdGFtcD4NCiAgPG5zMTpNZXRhSW5mbyB4bWxuczpuczE9Imh0dHA6Ly9HZGYuQ29yZS5TY2hlbWFzLk1ldGFJbmZvLnYxMDIiPg0KICAgIDxTb3VyY2VTeXN0ZW0+R3NlcG4uZXh0LldlYldlYXRoZXJTdGF0aW9uPC9Tb3VyY2VTeXN0ZW0+DQogICAgPFNvdXJjZVN..."}]
然后我有另一个逻辑应用程序,它由 Topic.I 上的消息触发,想要执行 Xml 转换操作。此操作的输入代码是:
"content": "@{xml(base64toString(triggerBody()?['ContentData']))}"
导致此错误:
模板无效。无法处理行“1”和列“2610”处的操作 'Transform_XML' 输入中的模板语言表达式:“模板语言函数 'xml' 参数无效。提供的值无法转换为 XML:'Data at the root level is invalid. Line 1, position 1.'。请参阅 https://aka.ms/logicexpressions#xml 了解使用详情。'.
感谢阅读 ;-) 我在这里做错了什么...?
您使用 Transform_XML 形状吗?不需要转换成XML,只需要传递内容:
"content": "@{base64toString(triggerBody()?['ContentData'])}"
好的,解决了:
"@xml(base64ToString(json(base64ToString(triggerBody()?['ContentData']))[0].$content))"