BeanIO - "Слишком мало полей, ожидается 8 минимум", почему?

Я использую BeanIO 1.2 в Java, и вот мое отображение:

  <stream name="RecordImport" format="delimited">
    <record name="Record" minOccurs="1" maxOccurs="unbounded" class="com.myclasses.Record">
      <field name="date" type="date" format="MM/dd/yyyy" trim="true"/>
      <field name="user" type="string" trim="true"/>
      <field name="storage" type="string" trim="true"/>
      <field name="product" type="string" trim="true"/>
      <field name="qty" type="bigdecimal" format="#,##0" trim="true"/>
      <field name="altQty1" type="bigdecimal" format="#,##0" trim="true"/>
      <field name="altQty2" type="bigdecimal" format="#,##0" trim="true"/>
      <field name="altQty3" type="bigdecimal" format="#,##0" trim="true"/>
    </record>
  </stream>

и мой текстовый файл выглядит так:

3/11/2012   lpq 200011  RDD1006 8           
3/11/2012   lpq 200011  RDD1006 8           
3/11/2012   lpq 200011  RDD1006 8   1   2   3
3/11/2012   lpq 200011  RDD1006 8           

В результате я получаю это сообщение:

"- Line 4: Too few fields, expected 8 minimum."

Теперь это странно, потому что у меня есть вкладки, чтобы указать, что в четвертой строке есть 8 полей. Похоже, это происходит из-за того, что последние поля дерева в 4-й строке являются нулевыми. Мне нужна возможность, чтобы они были нулевыми, но чтобы это сообщение не появлялось. Также странно, что это происходит только для 4-й строки, а не для 1-й или 2-й.

Есть идеи?

1 ответ

Я не мог воссоздать проблему, которую вы видите (используя BeanIO 1.2.5), не удалив одно из окон / полей в конце. Если они действительно являются необязательными, вы можете установить minLength="5" в определении записи. BeanIO 2.x немного более гибок и позволяет вместо этого устанавливать minOccurs="0" в конечных необязательных полях...

Удачи!

Другие вопросы по тегам