将 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")
}
}
我需要使用此 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")
}
}