2014-02-18 9 views
0

XML을 채우기 위해 Mule의 Groovy Script에서 논리를 수행 중입니다. 이 일환으로 Groovy에서 XML을 업데이트하기 위해 플로우 변수 &에 저장된 값을 더 사용하고 있습니다. 그러나 나는이 값들을 넣을 때 그것을 발견합니다. 여분의 공백이 출력에 추가되는 것을 발견했습니다.Mule ESB : Groovy 출력에서 ​​XML 공간 제거하기

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

정말겠습니까 :

여기 참조 용
<Address1>4375 WEST 1980 SOUTH</Address1> 
    <Address2></Address2> 
    <Address3></Address3> 
    <CityName>SALT LAKE CITY</CityName> 

내 코드입니다 귀하의 의견을 주셔서 감사합니다.

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