I want to use Groovy XmlSlurper to add " to both begin and end of all field values of a XML like below.
<SAPEmployeeData>
<record>
<COMPANY>060</COMPANY>
<VENDOR>E010013787</VENDOR>
<EMPLID>10013787</EMPLID>
<EFFECT_DATE>20180401</EFFECT_DATE>
<LAST_NAME>GONZALEZ-VARELA</LAST_NAME>
</record>
<record>
<COMPANY>060</COMPANY>
<VENDOR>E010013788</VENDOR>
<EMPLID>10013788</EMPLID>
<EFFECT_DATE>20140101</EFFECT_DATE>
<LAST_NAME>CARDOZO</LAST_NAME>
</record>
</SAPEmployeeData>
->
<SAPEmployeeData>
<record>
<COMPANY>"060"</COMPANY>
<VENDOR>"E010013787"</VENDOR>
<EMPLID>"10013787"</EMPLID>
<EFFECT_DATE>"20180401"</EFFECT_DATE>
<LAST_NAME>"GONZALEZ-VARELA"</LAST_NAME>
</record>
<record>
<COMPANY>"060"</COMPANY>
<VENDOR>"E010013788"</VENDOR>
<EMPLID>"10013788"</EMPLID>
<EFFECT_DATE>"20140101"</EFFECT_DATE>
<LAST_NAME>"CARDOZO"</LAST_NAME>
</record>
</SAPEmployeeData>
I think the code will be something like this. But i don't know what to write in the replaceNode section. Can someone help me please?
def Message processData(Message message) {
//Body
def body = message.getBody(java.lang.String) as String;
def xmlString = new XmlSlurper().parseText(body)
// filter on date
def items = xmlString.record.replaceNode{ something in this }
// Create output body
def newbody = new StreamingMarkupBuilder().bind {mkp.yield xmlString}.toString()
message.setBody(newbody)
return message;
}
Try this:
xmlString.children().each{ record->
record.childNodes().each{
it.replaceBody("\"${it.text()}\"")
}
}