2016-08-12 56 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>