Mule ESB:在Groovy输出中消除XML空间

Mule ESB:在Groovy输出中消除XML空间,xml,groovy,mule,Xml,Groovy,Mule,我正在Mule中用Groovy脚本执行逻辑以填充XML。作为这项工作的一部分,我将获取存储在流变量中的值&进一步在Groovy中使用它们来更新XML。然而,当我输入这些值时,我发现。我发现额外的空格会附加到输出中。这是输出: <Address1>4375 WEST 1980 SOUTH </Address1> <Address2> </Address2&g

我正在Mule中用Groovy脚本执行逻辑以填充XML。作为这项工作的一部分,我将获取存储在流变量中的值&进一步在Groovy中使用它们来更新XML。然而,当我输入这些值时,我发现。我发现额外的空格会附加到输出中。这是输出:

    <Address1>4375 WEST 1980 SOUTH            </Address1>
    <Address2>                                </Address2>
    <Address3>                                </Address3>
    <CityName>SALT LAKE CITY           </CityName>
4375西1980南
盐湖城
我希望它在输出中不显示任何空格,如中所示:

    <Address1>4375 WEST 1980 SOUTH</Address1>
    <Address2></Address2>
    <Address3></Address3>
    <CityName>SALT LAKE CITY</CityName>
4375西1980南
盐湖城
以下是我的代码供您参考:

    <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'])

e、 InfoType.text().equals('Addr')}
//设置数据
info.Address1.replaceBody(flowVars['Address1']))
info.Address2.replaceBody(flowVars['Address2'])
info.Address3.replaceBody(flowVars['Address3']))
info.CityName.replaceBody(flowVars['city'])
非常感谢你的意见


-你没有分享你的有效载荷,但我认为这就是空间的来源。如果无法修复有效负载,请对变量运行trim:

value="#[payload[0].Address1.trim()]"


基本上,从响应来看,您需要修剪额外的空间,您可以通过在流程末尾添加以下代码来实现这一点:

<response>
   <expression-transformer expression="org.mule.util.StringUtils.trim(payload)" doc:name="ToUpper"/>
</response>

<response>
   <expression-transformer expression="org.mule.util.StringUtils.trim(payload)" doc:name="ToUpper"/>
</response>