read xml file to csv using xml parser in groovy
<root>
<row>
<UserId>100</UserId>
<Name>Lionel Messi</Name>
<DOB>1987-06-24</DOB>
<Phone>0524389823</Phone>
<Email>lm10@gmail.com</Email>
</row>
<row>
<UserId>105</UserId>
<Name>Cristiano Ronaldo</Name>
<DOB>1985-02-05</DOB>
<Phone/>
<Email>cr7@gmail.com</Email>
</row>
<row>
<UserId>115</UserId>
<Name>Kylian Mbappe</Name>
<DOB>1998-12-20</DOB>
<Phone>062-47788354</Phone>
<Email/>
</row>
</root>
import com.sap.gateway.ip.core.customdev.util.Message
import java.nio.charset.StandardCharsets
import java.io.OutputStreamWriter
import groovy.xml.*
def Message processData(Message message) {
def payload = message.getBody(java.lang.String.class)
def root = new XmlParser().parseText(payload)
def csv = new StringWriter()
// Write header row
root.children().first().children().each { field ->
csv.write(field.name())
if (field != root.children().first().children().last()) {
csv.write(',')
}
}
csv.write('\n')
// Write data rows
root.children().each { record ->
record.children().each { field ->
csv.write(field.text())
if (field != record.children().last()) {
csv.write(',')
}
}
csv.write('\n')
}
message.setBody(csv.toString())
return message
}
UserId,Name,DOB,Phone,Email
100,Lionel Messi,1987-06-24,0524389823,lm10@gmail.com
105,Cristiano Ronaldo,1985-02-05,,cr7@gmail.com
115,Kylian Mbappe,1998-12-20,062-47788354,