1import java.io.*;
  2import java.util.*;
  3import javax.xml.parsers.*;
  4import org.w3c.dom.*;
  5import org.apache.crimson.tree.XmlDocument;
  6
  7public class XMLDemo {
  8
  9    Hashtable ht;
 10    
 11    protected void readXML(String filename)throws Exception{
 12        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
 13        DocumentBuilder db = null;
 14        try{
 15            db = dbf.newDocumentBuilder();
 16        }
catch(ParserConfigurationException ce){
 17            System.err.println(ce);
 18            System.exit(1);
 19        }

 20        Document doc = null;
 21        try{
 22            doc = db.parse(filename);
 23        }
catch(IOException ioe){
 24            System.err.println(ioe);
 25            System.exit(1);
 26        }
catch(DOMException e){
 27            System.err.println(e.getMessage());
 28            System.exit(1);
 29        }

 30        
 31        Element root = doc.getDocumentElement();
 32        NodeList students = root.getElementsByTagName("学生");
 33        for(int i = 0; i < students.getLength(); i++){
 34            Element student = (Element)students.item(i);
 35            javaxml.StudentBean sb = new javaxml.StudentBean();
 36            sb.setSex(student.getAttribute("性别"));
 37            NodeList name = student.getElementsByTagName("姓名");
 38            if(name.getLength()==1){
 39                Element e = (Element)name.item(0);
 40                Text t = (Text)e.getFirstChild();
 41                sb.setName(t.getNodeValue());
 42            }

 43            NodeList age = student.getElementsByTagName("年龄");
 44            if(age.getLength()==1){
 45                Element e = (Element)age.item(0);
 46                Text t = (Text)e.getFirstChild();
 47                sb.setAge(Integer.parseInt(t.getNodeValue()));
 48            }

 49            NodeList phone = student.getElementsByTagName("电话");
 50            if(phone.getLength()==1){
 51                Element e = (Element)phone.item(0);
 52                Text t = (Text)e.getFirstChild();
 53                sb.setPhone(t.getNodeValue());
 54            }

 55            ht.put(i, sb);
 56        }

 57    }

 58    
 59    protected void writeXML(String filename) throws Exception{
 60        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
 61        DocumentBuilder db = null;
 62        try{
 63            db = dbf.newDocumentBuilder();
 64        }
catch(ParserConfigurationException pce){
 65            System.err.println(pce);
 66            System.exit(1);
 67        }

 68        Document doc = null;
 69        try{
 70            doc = db.newDocument();
 71        }
catch(DOMException de){
 72            System.err.println(de.getMessage());
 73            System.exit(1);
 74        }

 75        
 76        Element root = doc.createElement("学生花名册");
 77        doc.appendChild(root);
 78        for(int i = 0; i < ht.size(); i++){
 79            javaxml.StudentBean sb = (javaxml.StudentBean)ht.get(i);
 80            Element student = doc.createElement("学生");
 81            student.setAttribute("性别", sb.getSex());
 82            root.appendChild(student);
 83            Element name = doc.createElement("姓名");
 84            student.appendChild(name);
 85            Text t_name = doc.createTextNode(sb.getName());
 86            name.appendChild(t_name);
 87            Element age = doc.createElement("年龄");
 88            student.appendChild(age);
 89            Text t_age = doc.createTextNode(sb.getAge()+"");
 90            age.appendChild(t_age);
 91            Element phone = doc.createElement("电话");
 92            student.appendChild(phone);
 93            Text t_phone = doc.createTextNode(sb.getPhone());
 94            phone.appendChild(t_phone);
 95        }

 96        FileOutputStream fo = new FileOutputStream(filename);
 97        OutputStreamWriter osw = new OutputStreamWriter(fo);
 98        ((XmlDocument)doc).write(osw, "gb2312");
 99        osw.close();
100        fo.close();
101    }

102    void showxml(int i){
103        //for(int i = 0; i < ht.size(); i++){
104            javaxml.StudentBean sb = (javaxml.StudentBean)ht.get(i);
105            System.out.println(sb.getName());
106            System.out.println(sb.getSex());
107            System.out.println(sb.getAge());
108            System.out.println(sb.getPhone());            
109        //}
110    }

111    
112    
113    /**
114     * @param args
115     * @throws Exception 
116     */

117    public static void main(String[] args) throws Exception {
118        // TODO Auto-generated method stub
119        long stat = System.currentTimeMillis();
120        long end;
121        System.out.println("开始读取文件!");
122        XMLDemo x = new XMLDemo();
123        x.ht = new Hashtable();
124        x.readXML("Input.xml");
125        System.out.println("文件读取完毕!\r显示读取内容");
126        x.showxml(0);
127        System.out.println("读取内容显示完毕\r输出读取内容到OutputXmlDemo.xml");
128        x.writeXML("OutputXmlDemo.xml");
129        end = System.currentTimeMillis();
130        System.out.println("程序运行时间:" + (end - stat));
131    }

132
133}

134
Input.xml
 1<?xml version="1.0" encoding="GB2312"?>
 2
 3<学生花名册>
 4  <学生 性别="男">
 5    <姓名>李华 </姓名>
 6    <年龄>19</年龄>
 7    <电话>1234567</电话>
 8  </学生>
 9  <学生 性别="女">
10    <姓名>张六 </姓名>
11    <年龄>18</年龄>
12    <电话>7654321</电话>
13  </学生>
14</学生花名册>
其中apache.crimson可来这里下载得到
仅供学习,有兴趣大家交流下