四種方式生成xml文件:
DOM、SAX(Java提供)
JDOM、DOM4J(第三方提供)app
/** * DOM方式建立xml文件 * @param file 文件 * @throws Exception */ public static void main(String [] args) { DOMcreate(new File("dom.xml")); } public static void DOMcreate(File file)throws Exception{ DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance(); DocumentBuilder db=dbf.newDocumentBuilder(); Document document=db.newDocument(); document.setXmlStandalone(true); Element root=document.createElement("tb_student"); for (int i = 0; i < 3; i++) { Element student=document.createElement("student"); Element name=document.createElement("name"), age=document.createElement("age"), grade=document.createElement("grade"); student.setAttribute("id", i+""); name.setTextContent("張"+i); age.setTextContent(""+i*5); grade.setTextContent(""+i*20); student.appendChild(name); student.appendChild(age); student.appendChild(grade); root.appendChild(student); } document.appendChild(root); TransformerFactory tff=TransformerFactory.newInstance(); Transformer tf=tff.newTransformer(); tf.setOutputProperty(OutputKeys.INDENT, "yes"); tf.transform(new DOMSource(document), new StreamResult(file)); }
/** * SAX方式建立xml文件 * @param file * @throws Exception */ public static void SAXcreate(File file)throws Exception { //初始化要生成文件的數據 ArrayList<Student> students=new ArrayList<Student>(); for (int i = 0; i < 3; i++) { Student student=new Student(i,"張"+i,5*i,10*i); students.add(student); } SAXTransformerFactory stf=(SAXTransformerFactory) SAXTransformerFactory.newInstance(); TransformerHandler handler=stf.newTransformerHandler(); Transformer tf=handler.getTransformer(); tf.setOutputProperty(OutputKeys.INDENT, "yes");//標籤自動換行 tf.setOutputProperty(OutputKeys.ENCODING, "UTF-8");//編碼格式 StreamResult result=new StreamResult(file);//建立Result對象 handler.setResult(result);//關聯 handler.startDocument(); handler.startElement("", "", "tb_students", null);//根節點標籤 for (Student student : students) { AttributesImpl atts=new AttributesImpl();//建立熟悉 atts.addAttribute("", "", "id", "", student.getId()+""); handler.startElement("", "", "student", atts);//元素標籤開始 handler.startElement("", "", "name", null);//元素標籤開始 handler.characters(student.getName().toCharArray(), 0, student.getName().length());//元素標籤內容 handler.endElement("", "", "name");//元素標籤結束 handler.startElement("", "", "age", null); handler.characters((""+student.getAge()).toCharArray(), 0, (""+student.getAge()).length()); handler.endElement("", "", "age"); handler.startElement("", "", "grade", null); handler.characters((""+student.getGrade()).toCharArray(), 0,(""+student.getGrade()).toCharArray().length); handler.endElement("", "", "grade"); handler.endElement("", "", "student");//元素標籤結束 } handler.endElement("", "", "tb_students");//結束根節點標籤 handler.endDocument(); }
實體類studentdom
package entity; public class Student { private int id; private String name; private int age; private int grade; public Student() { // TODO Auto-generated constructor stub } public Student(int id, String name, int age, int grade) { super(); this.id = id; this.name = name; this.age = age; this.grade = grade; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getGrade() { return grade; } public void setGrade(int grade) { this.grade = grade; } }
/** * DOM4J方式建立xml文件 * @param file * @throws Exception */ public static void DOM4Jcreate(File file)throws Exception{ org.dom4j.Document document=DocumentHelper.createDocument(); org.dom4j.Element root=document.addElement("rss"); root.addAttribute("version", "2.0"); org.dom4j.Element channel=root.addElement("channel"); org.dom4j.Element title=channel.addElement("title"); title.setText("新聞國內"); //... XMLWriter writer=new XMLWriter(new FileOutputStream(file),OutputFormat.createPrettyPrint()); writer.setEscapeText(false);//字符是否轉義,默認true writer.write(document); writer.close(); }
注:此處模擬的是一個」rss」文件的生成部分代碼,RSS(Really Simple Syndication)是一種描述和同步網站內容的格式,是使用最普遍的XML應用。網站
/** * JDOM方式建立xml文件 * @param file * @throws Exception */ public static void JDOMcreate(File file)throws Exception{ org.jdom2.Document document=new org.jdom2.Document(); org.jdom2.Element root=new org.jdom2.Element("rss"); root.setAttribute("version", "2.0"); root.addContent( new org.jdom2.Element("channel").addContent( new org.jdom2.Element("title").setText("新聞國內"))); document.setRootElement(root); XMLOutputter outputter=new XMLOutputter(); outputter.setFormat(Format.getPrettyFormat());//設置文本格式 outputter.output(document, new FileOutputStream(file)); }