我有一个没有标题的CSV文件,其中包含两个值,如
"lenovo","30000"
我想使用camel DSL在第一行设置标头并将其传递给另一条路线,标题如下:
"laptop","price"
我的DSL路线:
from("file:...?fileName=file1.csv&noop=true")
//Something I want to include string like this
.addLineInBody("laptop"+"price").append("\n")
.to("file:../?fileName=output.csv");
我怎样才能在camel DSL中做到这一点?
答案 0 :(得分:0)
我不完全理解你的标题问题。如果您只想在CSV文件前加上静态标题,请再次将其另存为CSV,您只需使用Java bean来预先添加消息正文。
如果您想将CSV转换为数据结构,反之亦然,请查看Camel CSV文档:http://camel.apache.org/csv.html
<强>更新强>
你可以像这样编写一个java bean。重要的部分是@Body
Camel注释将消息体注入方法。有关详细信息,请参阅http://camel.apache.org/parameter-binding-annotations.html。
随心所欲地进行身体操控。
public class CsvHeaderEnricher {
public String enrichCsvHeader(@Body String messageBody) {
String enrichedBody = "YourHeader" + messageBody;
return enrichedBody;
}
}
然后你可以在你的路线中调用这样的bean:
from("file:...?fileName=file1.csv&noop=true")
.bean(new CsvHeaderEnricher())
.to("file:../?fileName=output.csv");
new