最近在忙一些项目,需要讲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(); } } }
原文地址:http://blog.csdn.net/u010454729/article/details/24738403