java工具---将txt文件转成xml格式的文件

时间:2014-04-30 22:32:38   收藏:0   阅读:319

最近在忙一些项目,需要讲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();
		}
	}
}

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!