将 String 转换为 xml object 用于请求

Transform String into xml object for Request

我需要使用此 WSDL 与系统集成: wsdl

在 Studio 中,我使用“Web 服务消费者”。问题出在 body。在 transform 中,我创建了有效负载,但只有对它进行硬编码才能让它工作;我无法使字符串动态化

此脚本有效,但它使用固定的文字字符串:

%dw 2.0
output application/xml
ns ns0 http://test.es/IC/SERVICE/
---
{
    ns0#wsImprXML: {
        ns0#DataXML: "
                    <root>
                        <exp>
                            <bult>
                                <ci>965</ci> 
                                <nif>123</nif> 
                                <ccc>36020</ccc>
                                <service>31</service> 
                                <product>2</product> 
                                <total>1</total> 
                                <price>10,6</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>"
    }
}

如何在 xml 的 body 中创建字符串?这个字符串必须是动态的(用我存储在变量中的值填充它)?

你不应该使用文字 XML。您可以轻松地从 DataWeave 认为是对象的任何对象动态生成 XML。我将给出一个 DataWeave 变量的示例,您可以用 Mule 变量 (vars.myVar) 替换它。使用 write() 函数将对象转换为 WSDL 所需的字符串。您可以传递转换后的文本,或就地转换它,如下所示。

%dw 2.0
output application/xml
ns ns0 http://test.es/IC/SERVICE/
var someText=write(
    {
        root: {
            exp: {
                bult: {
                    ci: 965,
                    nif: 123,
                    ccc: 36020,
                    service: 31,
                    product: 2,
                    total: 1,
                    price: 10.6
                }
            }
        }
    }, "application/xml")
            
 
var someObject= {
        wsOptionsXML: {
            VersionDataXML: "1.0.0",
            VersionOptionsXML: "1.0.0",
            VersionResponseXML: "1.1.0",
            VersionErrorXML:"1.2.0"
        }
    }                    
---
{
    ns0#wsImprXML: {
        ns0#DataXML: someText,
        ns0#OptionsXML: write(someObject,"application/xml")
    }
}