1.用dom4j解析文件
package Xml3; import java.io.File; import java.util.Iterator; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; /* * 方法readDocumentByIterator()提供一种解析xml文件方法 * 每个Element通过elementIterator()和attributeIterator获取 * 其子元素和属性的迭代器 */ public class Dom4jTest2 { private File file; public Dom4jTest2(File file) { this.file = file; } public static void main(String[] args) { Dom4jTest2 test = new Dom4jTest2( new File("src/com/briup/xml/chap02/student.xml")); test.readDocumentByIterator(); //将xml转换成string类型 SAXReader reader = new SAXReader(); try { Document document = reader.read (new File("src/com/briup/xml/chap02/student.xml")); String docXmlText = document.asXML(); System.out.println(docXmlText); System.out.println("-------------docXmlText----------"); Element root = document.getRootElement(); String rootXmlText = root.asXML(); System.out.println(rootXmlText); System.out.println("-------------rootXmlText----------"); Element son = root.element("student"); String sonXmlText = son.asXML(); System.out.println(sonXmlText); System.out.println("-------------sonXmlText-----------"); } catch (Exception e) { e.printStackTrace(); } } public Document getDocument() { SAXReader reader = new SAXReader(); Document document = null; try { document = reader.read(file); } catch (DocumentException e) { e.printStackTrace(); } return document; } /* * 该方法只是枚举了两层,如果一直读取需要进行迭代循环 */ public void readDocumentByIterator() { Element root = getDocument().getRootElement(); //枚举根节点下所有子节点 for(Iterator ie = root.elementIterator();ie.hasNext();) { System.out.println("========"); Element element = (Element) ie.next(); System.out.println(element.getName()); //枚举属性 for(Iterator ia = element.attributeIterator();ia.hasNext();) { Attribute attribute = (Attribute) ia.next(); System.out.println(attribute.getName() +"="+attribute.getValue()); } //枚举当前节点下所有子节点 for(Iterator ieson = element.elementIterator();ieson.hasNext();) { Element son = (Element) ieson.next(); System.out.println(son.getName() +"="+son.getText()); } } } }
1.2用来创建xml文件
package Xml3; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.OutputStream; import java.io.OutputStreamWriter; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; public class Dom4jTest { public static void main(String[] args) { Dom4jTest test = new Dom4jTest(); Document doc = test.generateDocument2(); File file = new File("src/com/briup/xml/chap02/student.xml"); test.saveDocument(doc, file); } public void saveDocument(Document doc,File file) { //美化格式 OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("utf-8"); try { //按照字符流将xml输出到指定file文件中 OutputStream os= new FileOutputStream(file); OutputStreamWriter osw = new OutputStreamWriter(os); XMLWriter writer = new XMLWriter(osw, format); //根据document内容按照xml格式输出 writer.write(doc); writer.flush(); } catch (Exception e) { e.printStackTrace(); } } /* * <students> * <student id='1'> * <name>....</name> * .... * </student> *</students> */ public Document generateDocument(){ //创建文档 Document document = DocumentHelper.createDocument(); //创建根节点 Element studentsElement = document.addElement("students"); //创建注释 studentsElement.addComment("this is comment"); //创建stu1子节点 Element stu1Element = studentsElement.addElement("student"); //stu1子节点添加属性 stu1Element.addAttribute("id","1"); Element nameElement = stu1Element.addElement("name"); nameElement.addText("tom"); Element ageElement = stu1Element.addElement("age"); ageElement.addText("18"); return document; } public Document generateDocument2() { String str = "<?xml version='1.0' encoding='utf-8'?>" +"<students><!--this is common-->" + "<student id='2'>" + "<name>jack</name><age>20</age>" + "</student></students>"; Document document = null; try { document = DocumentHelper.parseText(str); } catch (DocumentException e) { e.printStackTrace(); } return document; } }