Java - 将管道和逗号分隔的文件转换为 xml [英] Java - convert pipe and comma delimited file into xml
本文介绍了Java - 将管道和逗号分隔的文件转换为 xml的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想将管道和逗号分隔的文件转换为 xml.我要转换的分隔文件格式为:
I want to convert pipe and comma both delimited file into a xml. The delimited file I am looking to convert is in the format:
UUID | Location | Name | Age, UUID | Location | Name | Age
123 | Bangalore | Paras | 23, 234 | Bangalore | Varun | 25
我希望将其转换为:
<data>
<UUID>123</UUID>
<location>Bangalore</location>
<name> Paras </name>
<age> 23</age>
</data>
<data>
<UUID>234</UUID>
<location>Bangalore</location>
<name> Paras </name>
<age> 23</age>
</data>
推荐答案
您需要对输入字符串进行双重解析.下面的示例将帮助您开始.
You need to double parse your input string. Below sample will help you to get going.
import java.io.BufferedOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.LineNumberReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.PrettyPrintWriter;
import com.thoughtworks.xstream.io.xml.StaxDriver;
class Data {
String UUID;
String location;
String name;
String age;
public Data(String[] elements){
int i = 0;
UUID = elements[i++].trim();
location = elements[i++].trim();
name = elements[i++].trim();
age = elements[i++].trim();
}
}
和转换器
public class Convert {
static final String[] headers = {"UUID","location","name","age"};
public static void main(String[] args) throws IOException {
List<Data> dataList = new ArrayList<Data>();
LineNumberReader r = new LineNumberReader(new FileReader("test.csv"));
String line = r.readLine();
while(line != null){
String[] dataArray = line.split(",");
for(String record:dataArray){
String[] elements = record.split("\\|");
Data data = new Data(elements);
//If you dont want to accumulate data then you can stream xml out.
dataList.add(data);
}
line = r.readLine();
}
r.close();
// now use your favorite xml library to stream out. I use xstream. in your case even direct constructing xml seems ok too.
XStream xstream = new XStream(new StaxDriver());
xstream.alias("data", Data.class);
xstream.toXML(dataList, System.out);
//if you want formatted xml then use PrettyPrintWriter..
/* BufferedOutputStream stdout = new BufferedOutputStream(System.out);
PrettyPrintWriter p = new PrettyPrintWriter(new OutputStreamWriter(stdout));
xstream.marshal(dataList, p);
*/
}
}
我的示例 csv 文件是
My sample csv file is
123| Bangalore | Paras | 23 , 234 | Bangalore | Varun | 25
456| Mumbai | xyz | 30 , 999 | Ahmedabad | abc | 28
和输出是
<list>
<data>
<UUID>123</UUID>
<location>Bangalore</location>
<name>Paras</name>
<age>23</age>
</data>
<data>
<UUID>234</UUID>
<location>Bangalore</location>
<name>Varun</name>
<age>25</age>
</data>
<data>
<UUID>456</UUID>
<location>Mumbai</location>
<name>xyz</name>
<age>30</age>
</data>
<data>
<UUID>999</UUID>
<location>Ahmedabad</location>
<name>abc</name>
<age>28</age>
</data>
</list>
这篇关于Java - 将管道和逗号分隔的文件转换为 xml的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文