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

Mule DataWeave 2.0 如何动态生成Web Service请求的XML字符串参数

解决方案

你当前的核心需求是给ns0#DataXML、ns0#OptionsXML两个XML字符串类型的字段填充动态变量,DataWeave 2.0支持两种实现方式:

方法1:直接使用字符串插值(适合结构简单的场景)

DataWeave双引号字符串原生支持$()插值语法,直接把硬编码的固定值替换为对应变量即可,框架会自动处理XML特殊字符的转义:

%dw 2.0
output application/xml
ns ns0 http://test.es/IC/SERVICE/
---
{
    ns0#wsImprXML: {
        ns0#DataXML: "
                    <root>
                        <exp>
                            <bult>
                                <ci>$(vars.ci)</ci> 
                                <nif>$(vars.nif)</nif> 
                                <ccc>$(vars.ccc)</ccc>
                                <service>$(vars.serviceId)</service> 
                                <product>$(vars.productId)</product> 
                                <total>$(vars.totalCount)</total> 
                                <price>$(vars.price)</price> 
                            </bult>
                        </exp>
                    </root>",
        ns0#OptionsXML: "<wsOptionsXML>
                                <VersionDataXML>1.0.0</VersionDataXML>
                                <VersionOptionsXML>1.0.0</VersionOptionsXML>
                                <VersionResponseXML>1.1.0</VersionResponseXML>
                                <VersionErrorXML>3.2.0</VersionErrorXML> 
                            </wsOptionsXML>"
    }
}

如果变量是数值/日期等非字符串类型,可补充as String做类型转换,比如$(vars.ci as String)。

方法2:先构造XML对象再转字符串(更推荐,适合复杂结构)

如果内部XML结构字段多、变动频繁,建议先按DataWeave标准XML语法构造结构化对象,再用write()函数转成XML字符串,自动校验标签格式、处理转义,避免手动写字符串出现的语法错误:

%dw 2.0
output application/xml
ns ns0 http://test.es/IC/SERVICE/
// 构造DataXML内部结构
var dataXmlContent = {
    root: {
        exp: {
            bult: {
                ci: vars.ci,
                nif: vars.nif,
                ccc: vars.ccc,
                service: vars.serviceId,
                product: vars.productId,
                total: vars.totalCount,
                price: vars.price
            }
        }
    }
}
// 构造OptionsXML内部结构,有动态值也可直接绑定变量
var optionsXmlContent = {
    wsOptionsXML: {
        VersionDataXML: "1.0.0",
        VersionOptionsXML: "1.0.0",
        VersionResponseXML: "1.1.0",
        VersionErrorXML: "3.2.0"
    }
}
---
{
    ns0#wsImprXML: {
        ns0#DataXML: write(dataXmlContent, "application/xml", {indent: true}),
        ns0#OptionsXML: write(optionsXmlContent, "application/xml", {indent: true})
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:36:02