Input.xml----------- <?xml version="1.0" encoding="gb2312"?> <studentList> <student sex="man"> <name>wgy</name> <age>23</age> <tel>12345678</tel> </student> <student sex="female"> <name>lemon</name> <age>23</age> <tel>87654211</tel> </student> </studentList> StudentBean.java --------- package com.bean; public class StudentBean { private String sex; private String name; private int age; private String tel; public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } 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 String getTel() { return tel; } public void setTel(String tel) { this.tel = tel; } } XMLTest.java ------------ package com.test; import java.io.*; import java.util.*; import javax.xml.parsers.*; import org.w3c.dom.*; import com.bean.StudentBean; import org.apache.crimson.tree.XmlDocument; public class XMLTest { static Vector<StudentBean> student_Vector = new Vector<StudentBean>(); private void readXMLFile(String inFile) throws Exception{ //为解析XML作准备 //创建DocumentBuilderFactory实例,指定DocumentBuilder DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = null; try{ db = dbf.newDocumentBuilder(); }catch(ParserConfigurationException pcfe){ //出异常时输出异常信息,然后退出,下同 System.err.print(pcfe); System.exit(1); } Document doc = null; try{ doc = db.parse(inFile); }catch(DOMException dom){ System.err.print(dom); System.exit(1); } //下面是解析XML的全过程, //比较简单,先取根元素”学生花名册” Element root = doc.getDocumentElement(); //取 学生 元素列表 NodeList students = root.getElementsByTagName("student"); //依次取得每个 学生 元素 for(int i=0;i<students.getLength();i++){ Element student = (Element) students.item(i); //创建一个学生实例 StudentBean studentBean = new StudentBean(); //取得学生的性别属性 studentBean.setSex(student.getAttribute("sex")); //取”姓名”元素,下面类同 NodeList names = student.getElementsByTagName("name"); if(names.getLength() == 1){ Element e = (Element)names.item(0); Text t = (Text) e.getFirstChild(); studentBean.setName(t.getNodeValue()); } NodeList ages = student.getElementsByTagName("age"); if(ages.getLength() == 1){ Element e = (Element)ages.item(0); Text t = (Text) e.getFirstChild(); studentBean.setAge(Integer.parseInt(t.getNodeValue())); } NodeList tels = student.getElementsByTagName("tel"); if(tels.getLength() == 1){ Element e = (Element) tels.item(0); Text t = (Text) e.getFirstChild(); studentBean.setTel(t.getNodeValue()); } student_Vector.add(studentBean); } } private void writeXMLFile(String outFile) throws Exception{ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = null; try{ db = dbf.newDocumentBuilder(); }catch(ParserConfigurationException pce){ System.err.print(pce); System.exit(1); } Document doc = null; doc = db.newDocument(); //下面是建立XML文档内容的过程, //先建立根元素”studentList” Element root = doc.createElement("studentList"); //根元素添加上文档 doc.appendChild(root); //取学生信息的bean列表 for(int i=0;i<student_Vector.size();i++){ //依次取每个学生的信息 StudentBean studentBean = student_Vector.get(i); //建立学生元素,添加到根元素 Element student = doc.createElement("student"); student.setAttribute("sex", studentBean.getSex()); root.appendChild(student); //建立姓名元素,添加到学生下面,下同 Element name = doc.createElement("name"); student.appendChild(name); Text tName = doc.createTextNode(studentBean.getName()); name.appendChild(tName); Element age = doc.createElement("age"); student.appendChild(age); Text tAge = doc.createTextNode(String.valueOf(studentBean.getAge())); age.appendChild(tAge); Element tel = doc.createElement("tel"); student.appendChild(tel); Text tTel = doc.createTextNode(studentBean.getTel()); tel.appendChild(tTel); } //把XML文档输出到指定的文件 FileOutputStream os = new FileOutputStream(outFile); OutputStreamWriter osw = new OutputStreamWriter(os); ((XmlDocument) doc).write(osw,"gb2312"); osw.close(); os.close(); } public static void main(String[] args) { //建立测试实例 XMLTest xmtTest = new XMLTest(); //初始化向量列表 //XMLTest.student_Vector = new Vector(); XMLTest.student_Vector = new Vector(); System.out.println("Read to read Input.xml file..."); try { xmtTest.readXMLFile("Input.xml"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("Finished, and begin writing out to the Output.xml"); try { xmtTest.writeXMLFile("Output.doc"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("Finished..."); } }