使用DOM解析XML文档,及维护(新增、修改、删除操作)详尽步骤

DOM概念 :

文档对象模型。DOM把XML文件映射成一棵倒挂的“树”,以根元素为根节点,每个节点都以对象的形式存在

大体步骤:

1.借助字节输入流,获取当前xml文档到jvm虚拟机中(磁盘->jvm)

  InputStream is = new FileInputStream("src/com/tencent/test2/dom.xml");

2.使用DOM解析器解析xml文档
2.1.得到DOM工厂实例对象

 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

2.2.从工厂中获取DOM解析工具

DocumentBuilder tool = factory.newDocumentBuilder();

2.3借助工具,将流中的xml字节文档转为doc
注:Document对象:代表整个xml文档,所有其他节点都以一定的顺序包含在其内部,我们总是会先得到这个对象,然后再执行后续操作

Document doc = tool.parse(is);

3.维护xml文档(新增、修改、删除操作)

4.重新保存到磁盘中(jvm->磁盘)
4.1.借助字节输出流,将doc存入流中

 OutputStream os=new FileOutputStream("src/com/tencent/test2/dom.xml");

4.2.得到工厂实例

TransformerFactory factory = TransformerFactory.newInstance();

4.3.从工厂中获取工具

 Transformer tool = factory.newTransformer();

4.4.开始传输,但是需要先准备数据源和目标位置
4.4.1.数据源:

DOMSource dom =new DOMSource(doc);

4.4.2.目标位置:

 StreamResult result=new StreamResult(os);

4.4.3.借助工具,将流中的dom输出到磁盘中

tool.transform(dom,result);

实现代码:

整体思路:
1.先创建一个dom.xml文档(相对路径)

<?xml version="1.0" encoding="UTF-8" standalone="no"?><students>

    <student>
        <name>张三</name>
        <age>19</age>
        <stuno>16001</stuno>
    </student>

    <student>
        <name>李四</name>
        <age>18</age>
        <stuno>16002</stuno>
    </student>

    <student>
        <name>王五</name>
        <age>21</age>
        <stuno>16003</stuno>
        <!--<atuno>16003</atuno>此位置字母不小心打错了!!还是应为  stuno  -->
    </student>

</students>

在这里插入图片描述

2.导入的包(不需要手动打)

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.w3c.dom.*;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.*;

3.创建一个DOM测试类

public class DomTest{
	Document doc;//将Document doc;定义在单个方法外,方便全局使用
}

4.开始

步骤1:借助字节输入流,获取当前xml文档到jvm虚拟机中(磁盘->jvm),并获得DOM解析器

@Before

    public void init() throws Exception {

        //1.借助字节输入流从磁盘获取xml文档到流中
        InputStream is = new FileInputStream("src/com/tencent/test2/dom.xml");

        //2.通过DOM工具从流中获取到JVM虚拟机中

        //2.1.得到DOM工厂实例对象
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

        //2.2.从工厂中获取DOM解析工具
        DocumentBuilder tool = factory.newDoc
  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值