繁体   English   中英

如何使用Beanio读取CSV文件过滤?

[英]How read CSV file filtering by line with Beanio?

我想用 BeanIO 读取 CSV 文件,我只想要以“CA”开头的行跳过行的 rest。 我需要“CA”行的值“0”“1”“2”和“3”“4”“5”

AA123
BA456
CA789
CA012
CA345
DA678
EA901

BeanIO 有一个 XML 映射器。

<stream name="InfoCSV" format="csv">
  <record name="info" class="com.example.Info" minOccurs="0" maxOccurs="unbounded">
    <field name="digit1" />
    <field name="digit2" />
    <field name="digit3" />
  </record>
</stream>

如何过滤线条? 我不知道 XML 解析器如何

首先,根据您显示的数据,您必须使用csv fixedlength

<stream name="InfoCSV" format="fixedlength" />

附录 A par 7 Streams有一个名为ignoreUnidentifiedRecords的配置设置,您需要忽略不以“CA”开头的记录/行。

您还需要告诉解析器如何识别您感兴趣的记录/行。 第 4.2.1 节解释了记录识别如何与rid="true"literal属性一起工作。 如果我们假设前 2 个字符标识您感兴趣的记录/行,我们有:

<field name="id" position="0" length="2" rid="true" literal="CA" />

把它们放在一起:

<stream name="InfoCSV" format="fixedlength" ignoreUnidentifiedRecords="true">
  <record name="info" class="com.example.Info" minOccurs="0" maxOccurs="unbounded">
    <field name="id" position="0" length="2" rid="true" literal="CA"/>
    <field name="digit1" position="2" length="1" />
    <field name="digit2" position="3" length="1" />
    <field name="digit3" position="4" length="1" />
  </record>
</stream>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM