実際には2つの別々のものがあります。構造化された方法で CSV データにアクセス (非整列化/整列化) し、実際のロジックを実行してデータを変換します。
CSVデータ形式 (またはflatpack ) を使用して、CSV データを List of List に取得し、プレーンな Java Bean (または必要に応じて groovy) で簡単に操作できます。次に、結果を取得して、同じコンポーネントで再度 CSV に変換できます。
大規模な CSV 構造と非常に複雑な変換がある場合、文字列のリストのリストではなく、オブジェクトのリストに CSV ファイルをマップしたい場合があります。入力データと出力データのクラスを定義し、Bindyコンポーネントを使用してそれらのクラスを CSV 行にバインドできます。その後、途中で Java オブジェクトのフィールドのマッピングを処理するだけで済みます。これはかなり簡単です。あるJavaオブジェクトを別のJavaオブジェクトにマッピングするためのフレームワークを掘り下げたい場合は、非常に優れたDozerを見ることができます(ただし、ほとんどの場合やり過ぎです)。
あなたが述べているように、実際のマッピングにはgroovyなどを使用できます。このトピックに関する例はあまり知られていませんが、かなり単純明快です。
<transform>
<groovy> response.f1 = request.f2 </groovy>
</transform>
オブジェクトのリクエストとレスポンスが利用できる場所。
それを行うさらに別の方法は、より大きなフレームワークSmooksを使用することです。多くの異なるデータ形式間の解析とマッピングを処理します。Camel の一部ではありませんが、Smooks には Camel サポートが組み込まれており、オープン ソースです。いくつかの小さなマッピングを行うだけではやり過ぎかもしれませんが、複雑なマッピング シナリオを何度も処理する場合は、その価値があるかもしれません。