• java读写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() + " " + s.getAge() + " "
          + 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;}
     }

  • 相关阅读:
    TPL中的异常
    异步接口
    TPL高级探秘
    TPL应用:HttpClient
    WLS_Oracle Weblogic部署应用程序(案例)
    WLS_Oracle Weblogic服务器生命周期(案例)
    WLS_Oracle Weblogic使用WLST工具(案例)
    WLS_Oracle Weblogic MSI和创建被管理服务器(概念)
    WLS_Oracle Weblogic配置文件(案例)
    WLS_Oracle Weblogic目录结构(案例)
  • 原文地址:https://www.cnblogs.com/littleCode/p/3936590.html
Copyright © 2020-2023  润新知