用于复杂CSV文件的Java解析框架

时间:2011-07-14 07:11:14

标签: java csv text-parsing

我需要将复杂(非固定长度)的csv文件解析为Java对象,以便比较它的值。 我首先尝试了Flatform解析框架,我喜欢在额外的(xml)文档中描述值的方法。也许它是简单的csv(以及平面)文件的正确工具。尽管如此,我的csv文件包含的字段数量不同 - 有时它们跨越多行。这些字段之间也存在依赖关系。

这是一个小样本:(每种类型都有一定数量的额外参数)

    ; <COMMENTS (to be ignored)>
    <NAME>,<TYPE_A>,<DESCRIPTION>,<PARAMETER>
    <NAME>,<TYPE_B>,<DESCRIPTION>,<PARAMETER>,<PARAMETER>
    <NAME>,<TYPE_C>,<DESCRIPTION>,<PARAMETER>,<PARAMETER>,<PARAMETER>,<PARAMETER>
    <NAME>,<TYPE_D>,<DESCRIPTION>,<PARAMETER>,<PARAMETER>,<PARAMETER>,<PARAMETER>, -
                              <PARAMETER>,<PARAMETER>, -
                              <PARAMETER>,<PARAMETER>
    <NAME>,<TYPE_B>,<DESCRIPTION>,<PARAMETER>,<PARAMETER>
    <NAME>,<TYPE_A>,<DESCRIPTION>,<PARAMETER>

所以我需要一些东西以更复杂的方式描述和解析csv文件。我是新手,我听说过解析器生成器 - 这就是我需要的吗?

3 个答案:

答案 0 :(得分:4)

尝试OpenCSV(请参阅http://opencsv.sourceforge.net/#what-features)。它处理嵌入式回车就好了。

答案 1 :(得分:2)

一种选择是使用Scanner类,或者您可能想要查看Spring Batch。我从来没有真正使用SB,但是给定批处理作业经常从简单的文本文件中读取,我相信我读它可以满足这一需求,包括各种对象映射。

答案 2 :(得分:0)

您也可以尝试japaki