最近在忙一些项目,需要讲txt文件转成xml格式的文件,在网上没找到比较好的方法,问师兄,说是用java,使用相关的jar包,就能够搞定。于是试着弄了。并且记录下来;
预备工作:
导入需要的jar包,下载地址可参考我上传的:http://download.csdn.net/detail/u010454729/7272571
以下为使用jar包调用函数的例子:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
public class test {
public static void txt_to_xml(File file) throws FileNotFoundException {
//txt文件转成xml文件,并且写入到xml文件里面,
String encoding="UTF-8";
InputStreamReader read;
try {
read = new InputStreamReader(
new FileInputStream(file),encoding);
BufferedReader reader = new BufferedReader(read);//用于读入的一些准备
InputStream fin = new FileInputStream(file);
String xml_name=file.getName().substring(0,file.getName().indexOf("的世界"));//找到对应的文件的名字
Document document = DocumentHelper.createDocument();
Element root = document.addElement("Entity");
root.addAttribute("title",xml_name);//根节点,添加属性
root.addAttribute("type", "PER");
root.addAttribute("id", "");
root.addAttribute("name", xml_name);
Element element = null;
String text = "";
int line_num=1;
String file_getname=file.getAbsolutePath();
String filePath_xml=file_getname.substring(0,file_getname.indexOf("."))+".xml";//输出路径
element = root.addElement("facts");
element.addAttribute("class","Infobox");
Element element_fact=null;
Element element_wiki=root.addElement("wiki_text");
Element record_ele=null;
while ((text=reader.readLine())!=null) {
// System.out.println(text+"----------------------------------------"+line_num);//用于打印出读入的每行字符串,检测
if(text.contains("entity")||text.contains("facts")){
}
else if(text.contains("<fact ")){
element_fact=element.addElement("fact");
if(text.contains("><")){
element_fact.addAttribute("name", text.substring(text.indexOf("name=\"")+6,text.indexOf("\"><")));
}
else if(text.contains("attr")){
element_fact.addAttribute("name", text.substring(text.indexOf("name=\"")+6,text.indexOf("attr")-2));
element_fact.setText(text.substring(text.indexOf("\">")+2,text.indexOf("</fact")));
}
else {
record_ele=element_fact;
}
}
else if(text.contains("<id")){
Element element_id=record_ele.addElement("id");
//---------------------
element_id.addAttribute("string", text.substring(text.indexOf("_end=\"")+6,text.indexOf("\">")));
element_id.setText(text.substring(text.indexOf("\">")+2,text.indexOf("</id")));
//----------------------
}
else if(text.contains("wiki")){
}
else {
element_wiki.setText(text);//剩下的情况,就直接写入wiki那一栏即可
}
line_num++;
}
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer;
writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream(
filePath_xml), "UTF-8"), format);
writer.write(document);
writer.close();
reader.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
public static void main(String[] args) {
String s="G:\\test\\火焰凯撒的世界.txt";
File file=new File(s);
try {
txt_to_xml(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}