我使用BeanIO來解析固定寬度的文本文件。例如,文件進入我的項目看起來像下面的固定寬度文本:BeanIO InvalidRecordGroupException給出錯誤的行號
CD DummyValue3
EF DummyValue4 DummyValue5 DummyValue6
AB DummyValue1 DummyValue2
...
在我的映射文件,我已經公佈各的recordId一個record
(即AB,CD,EF)
<record name="dummyRecord" template="AB"
class="com.company.project.DummyRecordClass" minOccurs="0"
maxOccurs="1" />
我然後讓每個記錄的template
:
<template name="AB">
<field name="recordID" length="3" rid="true" literal="AB"
lenientPadding="true" minOccurs="0" />
<field name="value1" length="12" lenientPadding="true"
minOccurs="1" required="true"/>
<field name="value2" length="12" lenientPadding="true"
minOccurs="1" required="true"/>
</template>
因爲value1
和value2
有minOccurs = 1
作爲以及required="true"
(是的,我知道這是多餘的,但它已經在代碼中,我們有成千上萬的這些字段),如果我有一個AB段,它們必須存在。
所以,如果我下面的文件傳遞到我的程序:
CD DummyValue3
EF DummyValue4 DummyValue5 DummyValue6
AB DummyValue1
我收到以下InvalidRecordGroupException:
org.beanio.InvalidRecordGroupException: Invalid 'ediMessage' record group at line 1
然而,由於缺少字段實際上是在第3行,當你有500-600行數據進入應用程序時,這可能是一個完全痛苦的調試。
有沒有什麼辦法讓beanIO輸出正確的行號,或即使必填字段缺少template
和field
價值?