You can use camel-xstream which have default behaviors and will create file
similar to Christion example. You simply do marshal().xstream() instead of
JAXB. No annotations, no classes, only declarative model.
Regards,
Lukasz
> How about creating a default xml out of the csv and then convert this to the
> custom xml using xslt.
>
> For example for this csv:
>
> Name, Age
> Anne, 23
> Jim, 45
>
> the default xml could look like this:
>
> <data>
> <line><Name>Anne</Name><Age>23</Age></line>
> <line><Name>Jim</Name><Age>45</Age></line>
> </data>
>
> The xslt does not have to be compiled and can be created using some tooling.
> We could add a marshaller for the default format to camel.
>
> Christian
>
>
> Am 21.07.2011 18:31, schrieb shekher awasthi:
>> Hi All,
>>
>> i am trying my hands on camel where i have to fetch some csv file from a
>> file system and needs to convert it to xml format and place it on some other
>> system
>>
>> i am using camel for this and here is my sample POC code
>>
>> *import org.apache.camel.CamelContext;
>>
>> import org.apache.camel.Exchange;
>>
>> import org.apache.camel.Message;
>>
>> import org.apache.camel.Processor;
>>
>> import org.apache.camel.builder.RouteBuilder;
>>
>> import org.apache.camel.impl.DefaultCamelContext;
>> import com.poc.convertor.CSVConverterBean;
>>
>> public class TestPOC {
>>
>> public static void main(String args[]) throws Exception {
>> CamelContext context = new DefaultCamelContext();
>> context.addRoutes(new RouteBuilder() {
>>
>> public void configure() {
>>
>> from("file:data/csv?noop=true").unmarshal().csv().bean(new
>> CSVConverterBean(),"processCSVInvoice").to("file:data/csvoutput?fileName=test.xml").marshal("jaxb");
>>
>>
>> }
>>
>> });
>> context.start();
>> Thread.sleep(1000);
>> context.stop();
>> }
>>
>> }*
>>
>> In this approach camel csv unmarshaller will covert the csv file in to java
>> list List<List<String>> i have written a java converter
>> CSVConverterBeanwhich will iterate the list and set the values in the
>> respective java
>> objects being generated by jaxb 2.x , final object is being marshaled in to
>> xml and file is being saved.
>>
>> Everything is being working properly with only one issue , if in future
>> there arises any request to change mapping we need to do the modification in
>> CSVConverterBean and than this java file needs to be recompiled and need to
>> be redistributed which we want to avoid.
>>
>> my question is, Is there any way by which we can map the values from the
>> java List being given by Camel to the respective java classes being
>> generated by the JaxB so that the need to recompile java code can be
>> avoided.
>> Thanks in advance for the help
>>
>
>
> --
> --
> Christian Schneider
> http://www.liquid-reality.de
>
> Open Source Architect
> Talend Application Integration Division http://www.talend.com
>