Java库或应用程序可将CSV文件转换为XML文件吗?

121

是否存在一个现成的Java应用程序或库,可以将CSV数据文件转换为XML文件?

XML标记将通过第一行包含列标题来提供。


54
似乎这是SO上第一个带有Java标签的问题。 - Paul Vargas
9
@Paul 不仅如此,它还是123! - bjb568
1
@Tommy https://dev59.com/L3VD5IYBdhLWcg3wXamd/ - bjb568
1
@bjb568 哦,哈哈。 - user7627726
8
难怪 Stack Overflow 上 Java 的第一个帖子被关闭了,因为它不属于主题:D - Sir. Hedgehog
显示剩余3条评论
16个回答

8
据我所知,还没有现成的库可以为您完成这项工作,但是编写一个能够将CSV转换为XML的工具只需要您编写一个简单的CSV解析器,并使用一些粘合代码将JDOM(或您选择的XML Java库)与其连接即可。

8
我不知道有什么方法可以在不写一点代码的情况下完成这个任务……你需要两个不同的库:
  • 一个 CSV 解析框架
  • 一个 XML 序列化框架
我建议使用 OpenCSV(一个 SourceForge 项目,用于解析 CSV 数据)作为 CSV 解析器(除非您想写自己的 CSV 解析器来增加乐趣)。
XML 序列化框架应该是可扩展的,以便在您想要将大型(或巨大的)CSV文件转换为XML时可以使用:我的推荐是 Sun Java Streaming XML Parser Framework(请参见此处),它允许拉取解析和序列化。

4
Jackson处理器系列有多个数据格式的后端,不仅限于JSON,还包括XML(https://github.com/FasterXML/jackson-dataformat-xml)和CSV(https://github.com/FasterXML/jackson-dataformat-csv/)后端。
转换需要使用CSV后端读取输入,并使用XML后端写入。如果您拥有(或可以定义)每行(CSV)条目的POJO,则最容易实现此操作。这不是严格的要求,因为CSV中的内容也可以“无类型”读取(一系列String数组),但在XML输出方面需要更多的工作。
对于XML方面,您需要一个包装根对象来包含要序列化的对象数组或List

4
这可能是一个过于基本或有限的解决方案,但你不能对文件的每一行进行 String.split() 操作,记住第一行的结果数组以生成 XML,然后在循环的每次迭代中使用适当的 XML 元素填充每行的数据数组。

2
如果您的CSV文件中包含带引号的逗号数据,这是相当常见的情况,那么就不行了。 - Alan Krueger

3
我也曾遇到同样的问题,需要将CSV文件转换为XML文件,但在网络上没有找到免费且好用的应用程序。因此,我编写了自己的Java Swing CSVtoXML应用程序。你可以从我的网站这里下载使用,希望能对你有所帮助。
如果不行,你也可以像我一样轻松编写自己的应用程序。源代码在JAR文件中,如果不能满足你的需求,可以根据需要进行修改。

3
对于CSV部分,你可以使用我的开源库decs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接