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;}
 }

java通过dom读写xml文件的更多相关文章

  1. Java实现——Dom4j读写XML文件

    1. dom4j概述 解析DOM4J是一个开源XML解析包,采用了Java集合框架并完全支持DOM,SAX和JAXP. 最大的特色是使用了大量的接口,主要接口都在org.dom4j里定义. 2. do ...

  2. Java中的的XML文件读写与DOM

    XML简介 要理解XML,HTML等格式,先来理解文档对象模型DOM 根据 DOM,HTML 文档中的每个成分都是一个节点,这些节点组成了一棵树.DOM 是这样规定的:整个文档是一个文档节点每个 HT ...

  3. Java中的的XML文件读写

    XML简介 要理解XML,HTML等格式,先来理解文档对象模型DOM 根据 DOM,HTML 文档中的每个成分都是一个节点,这些节点组成了一棵树.DOM 是这样规定的:整个文档是一个文档节点每个 HT ...

  4. Java 读写XML文件 API--org.dom4j

    om4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个十分优秀的JavaXML API,具有性能优异.功能强大和极其易使用的特点,同时它也是一个开放源代码的软件 ...

  5. Java是如何解析xml文件的(DOM)

    Java解析xml文件 在Java程序中读取xml文件的过程也称为"解析xml文件": 解析的目的: 获取 节点名和节点值 获取 属性名.属性值. 四中解析方式: DOM SAX ...

  6. JAVA学习笔记 -- 读写XML

    XML是一种可扩展标记语言 以下是一个完整的XML文件(也是下文介绍读写XML的样本): <? xml version="1.0" encoding="UTF-8& ...

  7. PHP读写XML文件的四种方法

    PHP对XML文件进行读写操作的方法一共有四种,分别是:字符串方式直接读写.DOMDocument读写. XMLWrite写和XMLReader读.SimpleXML读写,本文将依次对这四种方法进行介 ...

  8. Fixflow引擎解析(三)(模型) - 创建EMF模型来读写XML文件

    Fixflow引擎解析(四)(模型) - 通过EMF扩展BPMN2.0元素 Fixflow引擎解析(三)(模型) - 创建EMF模型来读写XML文件 Fixflow引擎解析(二)(模型) - BPMN ...

  9. 使用DOM创建xml文件

    使用DOM创建xml文件 创建xml的代码如下: public class CreateXML { public static void main(String[] args) { DocumentB ...

随机推荐

  1. kubernetes 生命周期问题分析

    1.Failed  -- pod里至少一个容器以非0code退出,说明应用有问题,需要debug应用容器 2.pending -- 说明API对象已经被创建和保存在etcd数据库里,但是创建过程出了问 ...

  2. day39

    今日内容: 1.对于表,库,记录的基本操作 2.数据库引擎的了解 3.表的详细 4.数据类型的掌握 1.回顾昨日对于表,库,记录的基本操作 库 增: create database mydb2; 删: ...

  3. abp 嵌入资源(视图、css、js)的访问

    最近在做的基于abp作为框架的一个项目,将一些属于框架功能的页面写在了一个独立程序集中,然后在web项目中引用该程序集达到访问框架页面目的. 这样一来发布web之后,在发布目录中是看不到写在另一个程序 ...

  4. Oracle 函数function之返回结果集

    工作中常需要经过一段复杂逻辑处理后,得出的一个结果集.并能够将这个结果集作为一个表看待,去进行关联查询 我一般采用建立函数function的方式来处理. --创建包,声明function和typeCR ...

  5. Python开发简单爬虫

    简单爬虫框架: 爬虫调度器 -> URL管理器 -> 网页下载器(urllib2) -> 网页解析器(BeautifulSoup) -> 价值数据 Demo1: # codin ...

  6. 关于C#中async/await中的异常处理(下)-(转载)

    上一篇文章里我们讨论了某些async/await的用法中出现遗漏异常的情况,并且谈到该如何使用WhenAll辅助方法来避免这种情况.WhenAll辅助方法将会汇总一系列的任务对象,一旦其中某个出错,则 ...

  7. 【本地服务器】json-server搭建本地https服务器(windows)

    (一)用json-server搭建简单的服务器 (搭建出来的服务器地址为localhost:3000) 1.新建Mockjson文件夹,进入该文件夹目录,运行命令 npm install -g jso ...

  8. [Noi2017]整数 BZOJ4942

    分析: 30+暴力应该还是蛮水的,可以随便写写... 60+的就没那么容易了,但是应该挺裸的,往上架一颗线段树,查询连续1或0的长度,或者找到前缀中,第一个1或0,之后区间覆盖,单点查询,开bool, ...

  9. 数据库连接池DBUtils使用

    一.简介 DBUtils简单说python实现的线程化数据库连接(连接池),DBUtils支持所有遵循DP-API 2规范的数据库连接模块,例如:mysql.sqlserver.oracle.sqli ...

  10. adb连接手机的两种方式

    adb连接手机进行调试有两种方式,一种使用USB线,一种使用无线WiFi. 第一种  使用USB线连接 1. 在手机上启用USB调试 2. CMD窗口输入adb devices,此时可以看到自己的设备 ...