java读写xml文件

java通过dom读写xml文件

 

要读的xml文件

<?xml version="1.0" encoding="GB2312"?>

<学生花名册>

<学生 性别 = "男">

<姓名>李华</姓名>

<年龄>14</年龄>

</学生>

<学生 性别 = "男">

<姓名>张三</姓名>

<年龄>16</年龄>

</学生>

</学生花名册>

 

package xml;

import java.io.FileOutputStream;

import java.io.OutputStreamWriter;

import java.io.Writer;

import java.util.Iterator;

import java.util.Vector;

 

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.transform.OutputKeys;

import javax.xml.transform.Result;

import javax.xml.transform.Source;

import javax.xml.transform.Transformer;

import javax.xml.transform.TransformerConfigurationException;

import javax.xml.transform.TransformerException;

import javax.xml.transform.TransformerFactory;

import javax.xml.transform.dom.DOMSource;

import javax.xml.transform.stream.StreamResult;

 

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;

import org.w3c.dom.Text;

 

public class DomTest {

   Vector students_Vector;

  private Vector readXMLFile(String file) throws Exception {

    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

    DocumentBuilder builder = dbf.newDocumentBuilder();

    Document doc = builder.parse(file); // 获取到xml文件

    // 下面开始读取

    Element root = doc.getDocumentElement();

    // 获取根元素 NodeList students = root.getElementsByTagName_r("学生");

     students_Vector = new Vector();

    for (int i = 0; i < students.getLength(); i++) {

       // 一次取得每一个学生元素

       Element ss = (Element) students.item(i);

 

 

 

      // 创建一个学生的实例 student stu = new student();

       stu.setSex(ss.getAttribute("性别"));

      NodeList names = ss.getElementsByTagName_r("姓名");

       Element e = (Element) names.item(0);

      Node t = e.getFirstChild();

      stu.setName(t.getNodeValue());

      NodeList ages = ss.getElementsByTagName_r("年龄");

      e = (Element) ages.item(0); t = e.getFirstChild();

      stu.setAge(Integer.parseInt(t.getNodeValue()));

      students_Vector.add(stu);

    }

     return students_Vector;

   }

 

 

// 写入xml文件

  public static void callWriteXmlFile(Document doc, Writer w, String encoding) {

    try {

      Source source = new DOMSource(doc);

      Result result = new StreamResult(w);

      Transformer xformer = TransformerFactory.newInstance() .newTransformer();

      xformer.setOutputProperty(OutputKeys.ENCODING, encoding);

      xformer.transform(source, result);

    } catch (TransformerConfigurationException e) {

      e.printStackTrace();

    } catch (TransformerException e) {

      e.printStackTrace();

    }

  }

  private void writeXMLFile(String outfile) {

    DocumentBuilderFactory dbf = DocumentBuilderFactory.

    newInstance(); DocumentBuilder builder = null;

    try {

       builder = dbf.newDocumentBuilder();

     } catch (Exception e) {

     }

     Document doc = builder.newDocument();

    Element root = doc.createElement("学生花名册");

    doc.appendChild(root); // 将根元素添加到文档上

    // 获取学生信息

    for (int i = 0; i < students_Vector.size(); i++) {

       student s = (student) students_Vector.get(i);

       // 创建一个学生

      Element stu = doc.createElement("学生");

      stu.setAttribute("性别", s.getSex());

      root.appendChild(stu);// 添加属性

      // 创建文本姓名节点

      Element name = doc.createElement("姓名");

       stu.appendChild(name);

      Text tname = doc.createTextNode(s.getName());

      name.appendChild(tname);

      //创建文本年龄节点

      Element age = doc.createElement("年龄");

      stu.appendChild(age); // 将age添加到学生节点上

      Text tage = doc.createTextNode(String.valueOf(s.getAge()));

      age.appendChild(tage); // 将文本节点放在age节点上

    }

     try {

      FileOutputStream fos = new FileOutputStream(outfile);

       OutputStreamWriter outwriter = new OutputStreamWriter(fos);

       // ((XmlDocument)doc).write(outwriter); //出错!

       callWriteXmlFile(doc, outwriter, "gb2312");

       outwriter.close(); fos.close();

     } catch (Exception e) {

      e.printStackTrace();

    }

   }

  public static void main(String args[]) {

     String str = "xml/student.xml";

    DomTest t = new DomTest();

    try { Vector v = t.readXMLFile(str);

      Iterator it = v.iterator();

      while (it.hasNext()) {

       student s = (student) it.next();

      System.out.println(s.getName() + "\t" + s.getAge() + "\t" + s.getSex());

    }

    } catch (Exception e) {

      e.printStackTrace();

    }

    String outfile = "xml/stucopy.xml";

     t.writeXMLFile(outfile);

  }

}

class student{

  private String sex;

  private String name;

   private int age;

  public int getAge() {

    return age;

   }

   public void setAge(int age) {

     this.age = age;

   }

  public void setSex(String s){

    sex=s;

  }

  public String getSex(){

    return sex;

  }

  public void setName(String n){

    name=n;

  }

  public String getName(){

    return name;

  }

}

资料:http://blog.csdn.net/k1113k/article/details/1495807

生成xml:http://wenku.baidu.com/view/b69a0126bcd126fff7050b1c.html

posted on 2013-03-13 11:15  路人乙轩  阅读(265)  评论(0)    收藏  举报

导航