【问题标题】:BeanIO - Expected minimum 1 occurrencesBeanIO - 预计最少出现 1 次
【发布时间】:2013-08-06 19:16:12
【问题描述】:

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

我什至尝试将整个记录的 maxLength 设置为 4,以便它考虑最后的额外空字段,但它仍然会引发该异常。奇怪的是,它只对最后一行执行此操作,而对其他行中的空字段不执行。

映射:

<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,但我无法修改,因为它已被锁定。

【问题讨论】:

    标签: java parsing text-parsing bean-io


    【解决方案1】:

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

    【讨论】:

    • 好吧,可以解决它,但我不明白为什么这只发生在最后一行以及为什么在其他正确定义的字段中出现空值(我确实有一个标签)构成“不存在的字段”。你知道是否有一种好方法可以覆盖默认的 beanio.properties 文件及其 org.beanio.field.minOccurs.delimited=1 设置?我通过 Maven 获得 BeanIO,因此我可以修改 beanio.properties,但我确实可以将它作为我项目的一部分签入。有没有办法仍然从 maven 获取 jar,但告诉 StreamFactory.class 以某种方式使用我的本地 beanio.properties 文件?
    • 如果您将 beanio.properties 文件添加到类路径中,BeanIO 将使用它来覆盖其默认设置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 2019-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多