Skip to content

Instantly share code, notes, and snippets.

@magnuspalmer
Last active August 29, 2015 14:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save magnuspalmer/12280bce85dc702714cf to your computer and use it in GitHub Desktop.
Save magnuspalmer/12280bce85dc702714cf to your computer and use it in GitHub Desktop.
CSV To XML Groovy mapping
@Grapes(
@Grab(group='org.apache.commons', module='commons-csv', version='1.1')
)
import org.apache.commons.csv.*
import groovy.xml.*
def inputCSV = '''a,b,c,
e,f,g,
'''
CSVFormat rfcFormat = CSVFormat.RFC4180.withHeader("Column1", "Column2", "Column3")
def parser = CSVParser.parse(inputCSV,rfcFormat)
def builder = new StreamingMarkupBuilder()
builder.encoding = 'UTF-8'
def outputXml = builder.bind {
mkp.xmlDeclaration()
mkp.declareNamespace('ns':'http:example.org/mynamespace')
'ns:Message'() {
parser.records.each { CSVRecord rec ->
row(){
e1(rec.Column1)
e2(rec.Column2)
e3(rec.Column3)
}
}
}
}
return XmlUtil.serialize(outputXml)
@magnuspalmer
Copy link
Author

Outputs:

 <?xml version="1.0" encoding="UTF-8"?><ns:Message xmlns:nch="http:example.org/mynamespace">
  <row>
    <e1>a</e1>
    <e2>b</e2>
    <e3>c</e3>
  </row>
  <row>
    <e1>e</e1>
    <e2>f</e2>
    <e3>g</e3>
  </row>
</ns:Message>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment