DOM操作XML文件简单一例

本文介绍了一个Java程序示例,展示了如何使用DOM接口来创建和解析XML文件。该程序首先创建一个包含多个学生的XML文件,然后解析此文件并打印出每个学生的姓名和年龄。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DOM操作,多用来读xml文件件,写很少用,无论读写操作的步骤都是固定的按照下面的格式套用即可。

//导入DOM包
import org.w3c.dom.*;
//导入java的实现包
import javax.xml.parsers.*;
import java.io.*;
import org.xml.sax.*;

public class ExTestXml{
  //关于xml的DOM操作,使用工厂模式实现
  //声明文档工厂
  private javax.xml.parsers.DocumentBuilderFactory df = null;
  //声明文档构建器
  private javax.xml.parsers.DocumentBuilder db = null;
  //生成要操作的文档
  private org.w3c.dom.Document doc = null;

  public ExTestXml() {
  }

  //生成xml文件
  public void write() {
    //实例化文档工厂
    df = DocumentBuilderFactory.newInstance();
    //根据工厂生成文档构建器
    try {
      db = df.newDocumentBuilder();
      //根据文档构建器生成文档
      doc = db.newDocument();
      //生成文档根元素
      Element banji = doc.createElement("class");
      //循环产生多个子元素及其子元素
      for (int i = 1; i < 5; i++) {
        //生成学生元素
        Element student = doc.createElement("student");

        /***操作student的子元素name***/
        //生成学生名称元素
        Element name = doc.createElement("name");
        //给name元素提供值(元素值作为元素的子元素存在,是一个文本节点)
        name.appendChild(doc.createTextNode("aa" + i));
        //把name添加到student中,Element接口继承自Node接口
        student.appendChild(name);

        /***操作student的子元素age***/
        //生成age元素
        Element age = doc.createElement("age");
        //给age元素提供值
        age.appendChild(doc.createTextNode("" + i));
        //把age添加到student中
        student.appendChild(age);

        //把student元素添加到根元素
        banji.appendChild(student);
      }
      //把根元素添加到文档上(根元素作为文档的一个子元素存在)
      doc.appendChild(banji);
      //输出xml文档,先把文档对象强制转换成xml文档
      //org.apache.crimson.tree.XmlDocument这个类在Eclipse中默认是不存在的,在JBuilder2005安装目录下的jdk1.4/jre/lib/rt.jar文件中包含这个类
      //如果想写xml文件需要手动添加这个包的内容,否则xml文件需要手写
      try {
        ( (org.apache.crimson.tree.XmlDocument) doc).write(new FileWriter(new File("banji1.xml")));
        System.out.println("文件创建完成");
      }
      catch (IOException ex1) {
        ex1.printStackTrace();
      }
    }
    catch (ParserConfigurationException ex) {
      ex.printStackTrace();
    }
  }
  //读取xml文件
  public void read(){
    //实例化文档工厂
    df = DocumentBuilderFactory.newInstance();
    //实例化文档构建器
    try {
      db = df.newDocumentBuilder();
      //由文档构建器获得要读取的xml文件,实例化文档对象
      try {
        doc = db.parse("banji1.xml");
        //xml中,全部由元素,标签组成,根据元素名称获得具体的元素信息
        //获得所有student元素的集合
        NodeList allStudents = doc.getElementsByTagName("student");
        //循环获得具体的student的信息
        for(int i=0;i<allStudents.getLength();i++) {
          //取得具体的student
          Element student = (Element)allStudents.item(i);
          //下面这步是重点,JavaScript操作xml文件的方式也是如此,只有方法名上的一点区别
          //获得学生姓名(         根据元素名name获得元素集合中的   第一个的  第一个子节点      的值)
          String name = student.getElementsByTagName("name").item(0).getFirstChild().getNodeValue();
          String age = student.getElementsByTagName("age").item(0).getFirstChild().getNodeValue();
          System.out.println("学生姓名:"+name+"     学生年龄:"+age);
        }
      }
      catch (IOException ex1) {
        ex1.printStackTrace();
      }
      catch (SAXException ex1) {
        ex1.printStackTrace();
      }
    }
    catch (ParserConfigurationException ex) {
      ex.printStackTrace();
    }
  }
  public static void main(String[] args){
    ExTestXml etx = new ExTestXml();
    //先生成xml文件
    etx.write();
    //读取刚刚生成的xml文件的内容并显示
    etx.read();
  }
}

 生成的xml文件的内容如下:

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

<class>
  <student>
    <name>aa1</name>
    <age>1</age>
  </student>
  <student>
    <name>aa2</name>
    <age>2</age>
  </student>
  <student>
    <name>aa3</name>
    <age>3</age>
  </student>
  <student>
    <name>aa4</name>
    <age>4</age>
  </student>
</class>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值