java - 一条记录多行,只有第一个带有 RID

标签 java parsing bean-io fixed-length-file

我是刚开始使用 BeanIO 2.1,但又遇到了问题。

我正在尝试解码一个固定长度的文件,该文件有一些记录分布在几行上,其中“rid”仅标记在这些行的第一行上

示例:

:10:BLABLABLABLA
:11:/TRTP/SEPA OVERBOEKING/IBAN
HR W HERMAN
503270327C30,49NTRFSCT20111212
:12:BLABLABLABLA

如您所见,记录 ':11:' 分布在 3 行中。 我想将这些行作为字符串列表来获取,其中将忽略“:11:”。

这是mapping.xml 文件:

<record name="ownerInformation" order="2" class="com.batch.records.OwnerInformation" minOccurs="1" maxOccurs="6" collection="list">
    <field name="tag" type="string" length="4" rid="true" literal=":11:" ignore="true" />
    <field name="description" type="string" length="unbounded" maxLength="65" />
</record>

结果出现UnexpectedRecordException异常:

org.beanio.UnexpectedRecordException: End of stream reached, expected record 'ownerInformation'

再次感谢您对我的帮助

最佳答案

可以Map Bean Objects that Span Multiple Records .

您必须为每一行创建记录 ID,例如: 我使用命令来分隔字段。

11,/TRTP/SEPA OVERBOEKING/IBAN
12,HR W HERMAN
13,503270327C30
13,49NTRFSCT20111212

类似这样的:

<group name=ownerInfo class="com.batch.records.OwnerInformation" minOccurs="1" maxOccurs="6">
  <record name="typeInfo" class="com.batch.records.Type" order="1" minOccurs="1" maxOccurs="1" >
    <field name="recordType" rid="true" literal="11" ignore="true" />
    <field name="iban" />
  </record>
  <record name="customer" class="com.batch.records.Customer" order="2" minOccurs="1" maxOccurs="1" >
    <field name="recordType" rid="true" literal="12" ignore="true" />
    <field name="name" />
  </record>
  <record name="items" class="com.batch.records.Item" collection="list" order="3" minOccurs="1" maxOccurs="unbounded" >
    <field name="recordType" rid="true" literal="13" ignore="true" />
    <field name="id" />
  </record>
</group>

这将映射到 OwnerInformation,如下所示:

package com.batch.records;

/* Getters and Setter are omitted for brevity */

public class OwnerInformation {
  Type type;
  Customer customer;
  List<Item> items;
}

public class Type {
  String iban;
}

public class Customer {
  String name;
}

public class Item {
  String id;
}

关于java - 一条记录多行,只有第一个带有 RID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29488810/

相关文章:

java - 如何使用 BeanIO 将 0 转换为 null

android - BeanIO - 加载默认流工厂实现类失败

javascript - parseInt ("08") 返回 0

java - 浏览器支持 Java Applet 的线程吗?

java - 没有访问器来设置属性 private Final java.util.Map org.springframework.boot.configurationprocessor.json.JSONObject.nameValuePairs

java - 如何动态获取EditText宽度并将其设置为recyclerView宽度

parsing - Golang 解析 json 响应

swift - 即使点击事件后,如何从 URL 加载部分 HTML?

java - 使用 BeanIO 映射 xml 元素及其属性

java - Jackson 可以仅使用注释反序列化为 Map<Long, String> 吗?