EDIT1マッピングのJavaObject
いずれかが、いくつかのより多くのorintedタイトルを持っているので、もし私が
を提案してください私は私の手をしようとしていますタイトルは、問題のために最善であるかどうかわからないです私は、ファイルシステムからいくつかのcsvファイルを取得する必要があり、ここでXML形式に変換し、私はこのためにラクダを使用していますいくつかの他のシステム
の上に置く必要があるとラクダの私のサンプルPOCコード
です私はリストを反復し、各Javaオブジェクトに値を設定するJavaコンバータCSVConverterBean
を書かれているのJavaリスト
List<List<String>>
にCSVファイルをひそかますこのアプローチラクダのCSVアンマーシャラーで
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();
}
}
210はJAXB 2によって生成されます。 x、最終オブジェクトがXMLにマーシャリングされ、ファイルが保存されています。
将来的にマッピングを変更する要求が発生した場合は、CSVConverterBean
で変更する必要があり、このJavaファイルを再コンパイルして再配布する必要がある場合避ける。
私の質問は、私たちがCamelから与えられたjavaリストの値をJaxBによって生成されたそれぞれのJavaクラスにマップすることができるので、Javaコードを再コンパイルする必要はありません。