如何使用SPring Batch读取复杂的输入模式

时间:2015-06-29 00:02:58

标签: spring spring-batch

我的情况是需要解析复杂的平面文件,每条记录分散到多行,如下所示。 BFT ICVMORDR1400210IJ5 *P* 00800RRJNZM 1EK19 1EL ***** 101 00800RRJNZM ******************* 5 201 00800RRJNZM ******************* 5 202 00800RRJNZM ******************* 5 203 00800RRJNZM ******************* 5 204 00800RRJNZM ******************* 5 205 00800RRJNZM ****************** 5 206 00800RRJNZM ****************** 5 301 00800RRJNZM ****************** 5 302 00800RRJNZM ****************** 59401 我有文件的标题行,详细记录分散到4种不同类型的记录,如最后100,200,300,400系列。如何使用Spring Batch解析这个复合体。

1 个答案:

答案 0 :(得分:0)

将一行读作记录 - 您可以在ur xml文件中使用以下配置 -

  <bean id="customlineTokenizer"
        class="org.springframework.batch.item.file.transform.FixedLengthTokenizer">
        <property name="columns" value="1-5,6-10" />
        <property name="names" value="firstname,lastname" />
    </bean>

        <bean id="customFieldSetMapper" class="com.mkyong.model.ReportFieldSetMapper" />


<bean id="cvsFileItemReader" class="org.springframework.batch.item.file.FlatFileItemReader">
    <property name="strict" value="false" />
    <property name="resource" value="classpath:report1" />
    <property name="lineMapper">
        <bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
            <property name="lineTokenizer" ref="customlineTokenizer" />
            <property name="fieldSetMapper" ref="customFieldSetMapper" >
            </property>
        </bean>
    </property>

</bean>