我试图访问" accountNumber" record2中的字段作为"属性"。文件格式是平面文件(格式="固定长度")。请帮帮我。
<beanio xmlns="http://www.beanio.org/2012/03">
<stream name="Definitions" format="fixedlength">
<record name="header" order="1" minOccurs="1" maxOccurs="1" class="map">
<field name="recordType" literal="HD" position="0" length="2" rid="true"/>
</record>
<group name="Sample" order="2" minOccurs="0" maxOccurs="unbounded" class="map">
<record name="record1" order="1" minOccurs="1" maxOccurs="1" class="map">
<field name="type" rid="true" literal="PP" position="0" length="2"/>
<field name="accountNumber" position="2" length="30"/>
</record>
<record name="record2" order="2" minOccurs="0" maxOccurs="unbounded" class="map" collection="list" >
<field name="type" rid="true" literal="FF" position="0" length="2"/>
< ******------ I want to access the "accountNumber" here ------****** />
</record>
</group>
<record name="trailer" order="3" >
<field name="recordType" rid="true" literal="TT" position="0" length="2"/>
</record>
</stream>
</beanio>
示例数据:
HD
PPXXXXXXXXXXXXXXXXXXXXXXXXXXX
FF
FF
PPYYYYYYYYYYYYYYYYYYYYYYYYYYY
FF
FF
TT
答案 0 :(得分:0)
我认为在阅读完所有记录后你必须自己做这个组合。这是可能的,因为来自record1
的信息将存在于Sample
组的地图中。您必须迭代每个record2
并设置record1
的信息。
我还没有完全实现这一点,但我很快就会,这是我使用spring-batch的策略:
ItemReader
设置批处理作业。ClassifierCompositeItemProcessor
向作业添加SubclassClassifier
。
ItemProcessors
,record1
ItemProcessor
会将该记录中的信息添加到步骤ExecutionContext
并返回 null ,以避免调用ItemWriter
ItemWriter
,其中会读取ExecutionContext
并将record1
与record2
的{{1}}组合在一起。我希望这会有所帮助。