2016-08-12 38 views
1

文件我工作的一个情况我有以下数据骆驼分割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 

我想航线骆驼航线csv文件它与骆驼。 实施例,当我在XML做我可以在路由解析XML

我不能使用骆驼Bindy如我没有固定在排定界符

例如

Row 1 can have 10 '|' (pipes/delimiter) 
Row 2 can have 20 '|' (pipes/delimiter) 
Row 3 can have 16 '|' (pipes/delimiter) 

它们的长度是可变这是我在bean中处理的。有什么方法可以解析或使用任何正则表达式?

+0

你是什么意思“我没有固定的分隔符在行中”?您能否提供一个更具体的CSV文件示例? –

+0

你的例子并没有真正的帮助:)你的意思是说第1行可以有10个用'|分隔的列和用'|'分隔的第2行20列?你是否总是使用管道字符作为分隔符? –

+0

我使用'|'(管道)作为分隔符,目前我正在做的是marshelling到XML然后做xparse – Ashish

回答

2

由于您始终使用|作为分隔符,因此可以使用default CSV support将内容作为列表列表加载,然后拆分主体以将每行作为列表,然后在您的列表中处理该列表(行)豆:

<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>