如何读取csv文件过滤行与beanio?

carvr3hs  于 2021-07-05  发布在  Java
关注(0)|答案(1)|浏览(332)

我想用beanio读取csv文件,我只想让以“ca”开头的行跳过其余的行。我需要“ca”行的值“0”“1”“2”和“3”“4”“5”

AA123
BA456
CA789
CA012
CA345
DA678
EA901

beanio有一个xmlMap器。

<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解析器

68de4m5k

68de4m5k1#

首先,根据所显示的数据,必须使用 fixedlength 格式分析器而不是 csv :

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

附录a par 7流有一个名为 ignoreUnidentifiedRecords 您需要忽略不以“ca”开头的记录/行。
您还需要告诉解析器如何识别您感兴趣的记录/行。第4.2.1节解释了记录标识如何与 rid="true" 以及 literal 属性。如果我们假设前两个字符标识您感兴趣的记录/行,我们有:

<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>

相关问题