Mule ESB:摆脱Groovy输出中的XML空间

时间:2014-02-18 05:29:40

标签: xml groovy mule

我在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

2 个答案:

答案 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()