Camel在正则表达式

时间:2016-08-12 09:13:33

标签: java apache-camel

我正在处理一个案例,其中我的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中处理的长度是可变的。有什么方法可以解析或使用任何正则表达式吗?

1 个答案:

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