i am working on converting CSV to XML, though i have many ways to do this but my requirement is to do it in such a way that in future the mapping can be changed without any code change.
so we are using the following approach.
we are using Apache camel for the integration so CSV is being converted out of the box by camel and is being provided as a List<List<String>>
with data something like
{[header1,header2,header3],[1,2,3],[2,4,5]}
i need to convert this list data to XML is the defined form but since i can't use the java mapping so was planning to do something like
to convert this List in to a flat XML file using XStream
and than use xslt to map the raw XML file to xslt, but when i am XStream to convert List to XML it giving following output
<list>
<java.util.Arrays_-ArrayList>
<a class="string-array">
<string>Quantity</string>
<string>Price</string>
<string>Total</string>
<string>Date</string>
<string>ID</string>
<string>Name</string>
<string>Ref#</string>
</a>
</java.util.Arrays_-ArrayList>
<java.util.Arrays_-ArrayList>
<a class="string-array">
<string>4</string>
<string>1.13</string>
<string>4.52</string>
<string>9/4/2008</string>
<string>275</string>
<string>Blue Ink</string>
<string>49385730</string>
</a>
</java.util.Arrays_-ArrayList>
<java.util.Arrays_-ArrayList>
<a class="string-array">
<string>5</string>
<string>2.16</string>
<string>2.16</string>
<string>8/3/2008</string>
<string>229</string>
<string>Red Ink</string>
<string>20549348</string>
</a>
my sample CSV is
Quantity,Price,Total,Date,ID,Name,Ref#
4,1.13,4.52,9/4/2008,275,Blue Ink,49385730
5,2.16,2.16,8/3/2008,229,Red Ink,20549348
so it seems not possible to map this raw XML to the required XML using XSLT. Is there any way to convert this List data in to some more presentable XML format so that we can map that XML with XSLT to avoid any code change. Or is there any other more efficient way to convert this list in to XML structure
Thanks in advance
The way how the generated XML is described (headers become the element tags), it is really hard to generate without custom programming. The best bet would be to write some code yourself using DOM4J.