当前位置: 首页 > 知识库问答 >
问题:

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

杜建章
2023-03-14

我在Azure logic应用程序中处理xml消息时遇到问题。我读了不少关于类似问题的文章,但不知何故,它对我不起作用:-)

我的情况:

我从一个逻辑应用程序向服务总线发布一条xml消息。似乎只有当主题采用Base64编码时,才能将消息发送到主题。所以我用下面的:

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

请注意,内容已经有这种格式:

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

执行此操作后,我看到消息被传递到服务总线主题。Service Bus Explorer工具显示以下消息文本:

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

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

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

它会导致以下错误:

无效模板。无法处理第“1”行和第“2610”列的“Transform_XML”输入中的模板语言表达式:“模板语言函数”XML“参数无效。无法将提供的值转换为XML:'根级别的数据无效。第1行,位置1“。请看https://aka.ms/logicexpressions#xml有关用法的详细信息。

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

共有2个答案

施宏大
2023-03-14

好的,解决了:

"@xml(base64ToString(json(base64ToString(triggerBody()?['ContentData']))[0].$content))"
怀飞掣
2023-03-14

您是否使用转换XML形状?您不需要转换为XML,只需传递以下内容:

"content": "@{base64toString(triggerBody()?['ContentData'])}"
 类似资料:
  • 您好,我有一个关于逻辑应用程序和Azure服务总线队列的性能问题。 我有一个逻辑应用程序,看起来像这样: (注意:延迟是为了模拟一组连接器/操作,这些连接器/操作运行大约需要2秒钟,我还使用锁令牌和会话ID来完成消息和关闭会话) 它通过峰值锁定每秒轮询服务总线以获得高吞吐量,因为我的服务总线队列使用会话在流中启用FIFO排序。因此,我正在做的是,向我的服务总线发送大约2000条具有不同会话ID的消

  • 我正在尝试在我的逻辑应用程序中使用Service Bus Queue send操作,该应用程序向队列发送消息。逻辑应用程序运行时,操作返回此错误: 尽管在创建队列时,我没有启用自动转发。有什么帮助吗?

  • 我正在开发一个Azure逻辑应用,其中有一个服务总线窥视锁触发器。服务总线的消息锁定持续时间为5分钟。我希望每5分钟有一个自动更新令牌机制,以防逻辑应用实例需要超过5分钟,以便该过程可以继续,而无需释放锁,让另一个消费者将消息带走。 有什么方法可以通过Logic应用程序实现这一点吗?

  • 我有一个逻辑应用程序,它由EventGrid主题触发,但使用事件中传递的SessionId从服务总线队列读取消息。 服务总线peek读取在一个直到循环中完成,该循环在服务总线peek读取超时时退出。(我已在操作设置中将超时设置为30秒)。 我遇到的问题是,尽管队列已满,但在循环退出之前只读取了大约20条消息。为什么会这样?

  • 我试图从使用逻辑应用程序的服务总线队列读取消息。我没有找到任何关于逻辑应用程序如何根据队列中的消息数量进行缩放的留档。任何帮助或指针非常感谢。

  • 此外,在微服务之间具有HTTP依赖关系,例如当使用HTTP请求链创建长请求/响应周期时,如图4-15的第一部分所示,不仅使微服务不自治,而且一旦链中的一个服务表现不佳,它们的性能就会受到影响。 来源:https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/architect-microservice-c