我最近将BeanIO框架升级到2.0.6版本,以将平面(制表符分隔)文件解析为Java对象,并且我注意到了如此奇怪的行为。
我不能在最后一行的最后一行中将字段留空,因为BeanIO向我抛出此错误消息:“预期最少出现1次。”

我甚至尝试将整个记录的maxLength设置为4,以使其在末尾占额外的null字段,但仍会引发该异常。奇怪的是,它仅针对最后一行而不针对其他行中的空字段。

对应:

<beanio xmlns="http://www.beanio.org/2012/03"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.beanio.org/2012/03 http://www.beanio.org/2012/03/mapping.xsd">
  <stream name="Inventory" format="delimited" strict="true" resourceBundle="com.crunchtime.mapping.cdp.Inventory">
    <record name="myRecord" minOccurs="1" maxOccurs="unbounded" minLength="0" maxLength="4" class="com.test.Record">
      <field name="userName" type="string"/>
      <field name="userId" type="string"/>
      <field name="type" type="string"/>
      <field name="version" type="string"/>
    </record>
  </stream>
</beanio>


文件:

Mark    User1   M   1.0
Tom User2   D   1.1
Jim User3   M   2.0
Scott   User4   G


是否有人对如何禁用该行为有任何想法?
我查看了beanio.properties,但由于它已被锁定而无法修改。

最佳答案

使用BeanIO 2.0或更高版本时,必须使用minOccurs =“ 0”配置输入流中可能不存在的字段。

关于java - BeanIO-预期至少出现1次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18088636/

10-09 01:56