我在Mule的Groovy Script中执行逻辑以填充XML。作为其中的一部分,我抓住了存储在流量变量和存储器中的值。进一步在Groovy中使用它们来更新XML。但是我发现当我输入这些值时。我发现额外的空格会附加到输出中。这是输出:
<Address1>4375 WEST 1980 SOUTH </Address1>
<Address2> </Address2>
<Address3> </Address3>
<CityName>SALT LAKE CITY </CityName>
我希望它在输出中没有任何空格,如:
<Address1>4375 WEST 1980 SOUTH</Address1>
<Address2></Address2>
<Address3></Address3>
<CityName>SALT LAKE CITY</CityName>
供您参考,这是我的代码:
<set-variable doc:name="address1" value="#[message.payload[0].Address1]" variableName="address1"></set-variable>
<set-variable doc:name="address2" value="#[message.payload[0].Address2]" variableName="address2"></set-variable>
<set-variable doc:name="address3" value="#[message.payload[0].Address3]" variableName="address3"></set-variable>
<set-variable doc:name="city" value="#[message.payload[0].City" variableName="city"></set-variable>
<scripting:component doc:name="Groovy">
<scripting:script engine="Groovy"><![CDATA[//parse
records = new XmlSlurper(false,false).parseText(payload)
info = records.Infos.Info.find { e -> e.InfoType.text().equals('Addr') }
//set data
info.Address1.replaceBody(flowVars['address1'])
info.Address2.replaceBody(flowVars['address2'])
info.Address3.replaceBody(flowVars['address3'])
info.CityName.replaceBody(flowVars['city'])
非常感谢您的意见。
-S
答案 0 :(得分:1)
基本上从响应中你需要修剪多余的空格,你可以通过在流程末尾添加以下代码来实现这一点:
<response>
<expression-transformer expression="org.mule.util.StringUtils.trim(payload)" doc:name="ToUpper"/>
</response>
答案 1 :(得分:0)
您没有共享您的有效负载,但我认为这是空间的来源。如果无法修复有效负载,请对变量运行trim:
value="#[payload[0].Address1.trim()]"
或
flowVars['address1'].trim()