我最近将我的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,但由于它被锁定,我无法修改。
答案 0 :(得分:4)
使用BeanIO 2.0或更高版本,您必须使用minOccurs =“0”配置输入流中可能不存在的字段。