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,


Popular posts from this blog

pss book : శ్రీకృష్ణుడు దేవుడా, భగవంతుడా completed , second review needed. 26th April 2024

pss book: గురు ప్రార్థనామంజరి . completed 21st july 2024

pss book: కధల జ్ఞానము read review pending. 25th june 2024