You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Logic Apps中XPath提取BOMessage返回编码结果的解决方法求助

解决Logic Apps提取XML中BOMessage元素返回Base64编码的问题

问题场景

原始XML内容:

<?xml version="1.0" encoding="UTF-8"?>
<part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="payload">
    <process xmlns="http://xmlns.oracle.com/CommonBaswareHTTPWrapperProvider/CommonBasware_HTTPWrapperProviderBPEL">
        <BaswareRequest xmlns="http://xmlns.oracle.com/CommonBaswareHTTPWrapperProvider/BaswareRequest">
            <BOName>yy</BOName>
            <FileName>xx.xml</FileName>
            <Action>SEND</Action>
            <BOMessage>
                <DocumentElement xmlns="">
                    <Item>
                        <Text_1>123</Text_1>
                        <Text_2>123 CIO Office HOF</Text_2>
                        <Text_3>SWEDEN</Text_3>
                        <Text_4>3650</Text_4>
                        <Text_5>SWEDEN</Text_5>
                        <Text_6>True</Text_6>
                        <Text_EN />
                        <Active>True</Active>
                        <Company>001</Company>
                    </Item>
                </DocumentElement>
            </BOMessage>
        </BaswareRequest>
    </process>
</part>

需求是提取<BOMessage>元素及其全部内容,在Logic Apps的Compose动作中使用了以下表达式:

xpath(xml(triggerBody()), '//*[local-name()="BOMessage"]')

但返回结果是包含Base64编码内容的对象数组:

[
  {
    "$content-type": "application/xml;charset=utf-8",
    "$content": "PEJPTWVzc2FnZSB4bWxucz0iaHR0cDovL3htbG5zLm9yYWNsZS5jb20vQ29tbW9uQmFzd2FyZUhUVFBXcmFwcGVyUHJvdmlkZXIvQmFzd2FyZVJlcXVlc3QiPg0KICAgICAgICAgICAgICAgIDxEb2N1bWVudEVsZW1lbnQgeG1sbnM9IiI+DQogICAgICAgICAgICAgICAgICAgIDxJdGVtPg0KICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRfMT4xMjM8L1RleHRfMT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0XzI+MTIzIENJTyBPZmZpY2UgSE9GPC9UZXh0XzI+DQogICAgICAgICAgICAgICAgICAgICAgICA8VGV4dF8zPlNXRURFTjwvVGV4dF8zPg0KICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRfND4zNjUwPC9UZXh0XzQ+DQogICAgICAgICAgICAgICAgICAgICAgICA8VGV4dF81PlNXRURFTjwvVGV4dF81Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRfNj5UcnVlPC9UZXh0XzY+DQogICAgICAgICAgICAgICAgICAgICAgICA8VGV4dF9FTiAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPEFjdGl2ZT5UcnVlPC9BY3RpdmU+DQogICAgICAgICAgICAgICAgICAgICAgICA8Q29tcGFueT4wMDE8L0NvbXBhbnk+DQogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4NCiAgICAgICAgICAgICAgICA8L0RvY3VtZW50RWxlbWVudD4NCiAgICAgICAgICAgIDwvQk9NZXNzYWdlPg=="
  }
]

尝试用xml()、base64ToString()、decodeBase64()直接包裹XPath表达式均报错。

解决方案

核心原因

Logic Apps中xpath()函数返回的是XML节点对象数组,当直接输出时会自动序列化为包含Base64编码内容的JSON结构,而非原始XML字符串。

正确表达式

1. 提取BOMessage的XML字符串

如果需要获取<BOMessage>的原始XML字符串,使用以下表达式:

string(xpath(xml(triggerBody()), '//*[local-name()="BOMessage"]')[0])
  • xpath(...)返回节点数组,[0]取第一个匹配的节点
  • string()将XML节点转换为对应的XML字符串

2. 转换为可操作的XML对象(供后续流程使用)

如果需要将提取的内容转为Logic Apps可直接操作的XML对象,再嵌套xml()函数:

xml(string(xpath(xml(triggerBody()), '//*[local-name()="BOMessage"]')[0]))

为什么之前的尝试失败?

  • 直接用xml(xpath(...)):xpath()返回的是节点数组,不是字符串,xml()函数仅接受字符串输入,因此报错
  • 直接用base64ToString(xpath(...)):xpath()返回的是对象数组,不是单纯的Base64字符串,无法直接解码

内容的提问来源于stack exchange,提问作者ibda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 06:05:08