0

我遇到了一个小问题,我正在寻求您的帮助!使用 BeanIO 2.1 并处理固定长度文件,我目前正在尝试检索结构如下的记录:28C:5n/5n

  • ':28C:':修复
  • 5 个数字(最多)
  • '/' : 使固定
  • 5 个数字(最多)

例子:

  • :28C:61/00005
  • :28C:100/00001
  • :28C:12345/12345

这是代码片段:

<record name="statementNumber" class="com.batch.records.StatementNumber" occurs="1">
    <field name="tag" type="string" length="5" rid="true" literal=":28C:" ignore="true" />
    <field name="statementNr" type="int" length="unbounded" maxLength="5" />
    <field name="separator" type="string" length="1" rid="true" literal="/" ignore="true" />
    <field name="sequenceNr" type="int" length="unbounded" maxLength="5" />
</record>

运行我的解析器时,我得到了这个异常:

Cannot determine field position, field is preceded by another component with indeterminate occurrencesor unbounded length 

我的问题是:如何告诉 BeanIO 字段“/”实际上是两个变量字段之间的分隔符?

提前致谢

4

1 回答 1

1

一行上只能有一个无限长度的字段。BeanIO文档说:

固定长度记录中最后一个字段的长度可以设置为无界以禁用填充并允许在其他固定长度记录的末尾有一个可变长度字段。

老实说,我不确定这是否可以使用 BeanIO 来完成。是否可以选择将5n/5n字段作为 1 个字段完全读入 Java 并将其拆分到/您的代码中,而不是 BeanIO?

于 2015-04-02T12:44:35.393 回答