次のmapping.xml
ファイルは私のために働きます。複数のフィールドでrid
を使用していることがわかります。これにより、BeanIOは正しいレコードを識別するために、より多くのデータをオンラインで使用します。
<stream name="dummy" format="fixedlength" minOccurs="1" maxOccurs="1" >
<group name="myFile" class="com.company.project.File" >
<record name="header" class="com.company.project.Header" minOccurs="1" maxOccurs="1">
<field name="id" rid="true" length="1" required="true" literal="X" />
<field name="h1" rid="true" length="8" required="true" regex=".{8}" />
<field name="h2" length="4" required="false" minOccurs="0"/>
</record>
<record name="detailRecords" class="com.company.project.Detail" minOccurs="1" maxOccurs="unbounded" collection="collection">
<field name="d1" rid="true" length="9" required="true" regex=".{8,9}" />
<field name="d2" rid="true" length="5" required="true" regex=".{5}" />
<field name="d3" length="5" required="false" minOccurs="0"/>
</record>
<record name="trailer" class="com.company.project.Trailer" minOccurs="1" maxOccurs="1">
<field name="id" rid="true" length="1" required="true" literal="Y" />
<field name="tValue" rid="true" length="7" required="true" regex=".{7}" />
</record>
</group>
</stream>
これがうまく行かない場合は、データの具体的な詳細と可能であれば実際のデータが必要です。
試験1:
X10506505
RANDOM00 DATA1
RANDOM00 DATA2
Y0000001
出力:
Header: id='X', h1='10506505'
Detail: d1='RANDOM00', d2='DATA1'
Detail: d1='RANDOM00', d2='DATA2'
Trailer: id='Y', tValue='0000001'
試験2:
X10506505
RANDOM00 DATA1
RANDOM00 DATA2
XANDOM00 DATA3
YANDOM00 DATA4
Y0000001
出力:
Header: id='X', h1='10506505'
Detail: d1='RANDOM00', d2='DATA1'
Detail: d1='RANDOM00', d2='DATA2'
Detail: d1='XANDOM00', d2='DATA3'
Detail: d1='YANDOM00', d2='DATA4'
Trailer: id='Y', tValue='0000001'
おかげでまた彼の助けのための同僚(マルコム・マクリーン)に行かなければなりません。
詳細レコードが「X」または「Y」で始まる確率はいくらですか? – nicoschl
トレーラーとヘッダーレコードがX/Yで始まる確率は100%です。 – Purus
ヘッダーで始まっていないものとトレーラーIDが詳細レコード。申し訳ありませんが、それ以外には実際に詳細レコードを特定する方法はありません。 – nicoschl