我正在处理一个案例,其中我的csv文件包含以下数据
100| Some Delimited Data
200| Some Delimited Data
100| Some Delimited Data
400| Some Delimited Data
400| Some Delimited Data
200| Some Delimited Data
我正在努力使驼峰路线
when 100
marshal csv & send to Bean
when 200
marshal csv & send to bean
我正试图用骆驼来路线。 我在XML中的示例我可以在路由中解析XML
我不能使用Camel-Bindy,因为我没有固定的分隔符
示例
Row 1 can have 10 '|' (pipes / delimiter)
Row 2 can have 20 '|' (pipes / delimiter)
Row 3 can have 16 '|' (pipes / delimiter)
它们在bean中处理的长度是可变的。有什么方法可以解析或使用任何正则表达式吗?
答案 0 :(得分:3)
由于您始终使用|
作为分隔符,因此可以使用default CSV support将内容作为列表列表加载,然后拆分正文以将每行作为列表进行处理,然后处理你的bean中的那个列表(行):
<unmarshal>
<csv delimiter="|"/>
</unmarshal>
<split>
<simple>${body}</simple> <!-- Body will be a list of lists -->
<choice>
<when>
<simple>${body[0]} == '100'</simple>
<to uri="bean:processor100"/>
</when>
<when>
<simple>${body[0]} == '200'</simple>
<to uri="bean:processor200"/>
</when>
</choice>
</split>