2014-02-18 35 views
0

我正在Mule的Groovy Script中執行邏輯來填充XML。作爲其中的一部分,我抓取存儲在流變量&中的值,並在Groovy中進一步使用它們來更新XML。但是,我發現,當我把這些價值。我發現額外的空格會被附加到輸出中。這是輸出:Mule ESB:擺脫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

你是不是分享你的有效載荷,但我認爲這其中的空間從何而來。運行中的變量修剪,如果你不能修復有效載荷:

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

flowVars['address1'].trim() 
1
從響應

基本上你需要修剪多餘的空格,你可以簡單地通過添加下面的代碼實現這一點流程結束:

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