@FixedLengthRecord()
public class Customer {
@FieldFixedLength(4)
public Integer custId;
@FieldAlign(alignMode=AlignMode.Right)
@FieldFixedLength(20)
public String name;
@FieldFixedLength(3)
public Integer rating;
@FieldTrim(trimMode=TrimMode.Right)
@FieldFixedLength(10)
@FieldConverter(converter = ConverterKind.Date,
format = "dd-MM-yyyy")
public Date addedDate;
@FieldFixedLength(3)
@FieldOptional
public String stockSimbol;
}
然后使用以下方法解析文本文件:
FileHelperEngine<Customer> engine =
new FileHelperEngine<Customer>(Customer.class);
List<Customer> customers =
new ArrayList<Customer>();
customers = engine.readResource(
"/samples/customers-fixed.txt");
# 1 楼答案
我知道您要求使用Java,但我觉得这是一项非常适合脚本语言的任务。下面是一个用Groovy编写的快速(非常简单)解决方案
测试。csv
csvtoxml。groovy
将以下XML写入标准输出:
但是,代码进行非常简单的解析(不考虑引号或转义逗号),并且不考虑可能缺少的数据
# 2 楼答案
也许这会有帮助:JSefa
您可以使用此工具读取CSV文件并将其序列化为XML
# 3 楼答案
如上所述,我不知道如何一步到位,但如果您准备好使用非常简单的外部库,我建议:
OpenCsv用于解析CSV(小、简单、可靠且易于使用)
Xstream解析/序列化XML(非常易于使用,并创建完全可读的XML)
使用与上述相同的示例数据,代码如下所示:
产生以下结果: (Xstream允许对结果进行非常精细的调整…)
# 4 楼答案
这个解决方案不需要任何CSV或XML库,而且我知道,它不会处理任何非法字符和编码问题,但是如果您的CSV输入不违反上述规则,您可能也会对它感兴趣
注意:除非您知道自己在做什么或没有机会使用其他库(可能在某些官僚项目中),否则不应使用此代码。。。对较旧的运行时环境使用StringBuffer
现在我们开始:
输入测试。csv(从本页的另一个答案中盗取):
结果输出:
# 5 楼答案
我不明白你为什么要这么做。这听起来几乎像是货物崇拜编码
将CSV文件转换为XML不会增加任何价值。您的程序已经在读取CSV文件,因此认为您需要XML是行不通的
另一方面,读取CSV文件,对值执行操作,然后序列化为XML是有意义的(当然,使用XML也是有意义的…;)但您应该已经有了一种序列化为XML的方法
# 6 楼答案
我有一个开源框架,用于处理CSV和平面文件。也许值得一看:JFileHelpers
使用该工具包,您可以使用bean编写代码,如:
然后使用以下方法解析文本文件:
您将拥有一个已解析对象的集合
希望有帮助