XML 解析技术:DOM4j

前言:
我一直以来就坚信一句话:不积跬步无以至千里,不积小流无以成江海。可能很多人对一些基础概念会选择性忽略,但往往基础和知识理解深度决定你的上限。

今天给大家带来一个对框架以及容器源码理解提升的知识点笔记:XML 解析技术,这个知识点也是大家容易忽视的知识点。

大家学完后也可以想想Tomcat是怎么解析web.xml文件的?spring框架是怎么解析 bean.xml文件的?…

1 文档

https://dom4j.github.io/javadoc/1.6.1/

2 XML 解析技术原理

  1. 不管是 html 文件还是 xml 文件它们都是标记型文档,都可以使用 w3c 组织制定的 dom 技术来解析
  2. document 对象表示的是整个文档(可以是 html 文档,也可以是 xml)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kuhxuL2V-1663389775569)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220406102815529.png)]

3 XML解析技术

● 早期 JDK 为我们提供了两种 xml 解析技术 DOM 和 Sax 简介

  1. dom 解析技术是 W3C 组织制定的,而所有的编程语言都对这个解析技术使用了自己语言的特点进行实现。Java 对 dom 技术解析也做了实现

  2. sun 公司在 JDK5 版本对 dom 解析技术进行升级:SAX( Simple API for XML ) SAX 解析,它是以类似事件机制通过回调告诉用户当前正在解析的内容。 是一行一行的读 取 xml 文件进行解析的。不会创建大量的 dom 对象。 所以它在解析 xml 的时候,在性能上优于 Dom 解析

  3. 这两种技术已经过时,知道有这两种技术即可

● 第三方的 XML 解析技术

  1. jdom 在 dom 基础上进行了封装
  2. dom4j 又对 jdom 进行了封装。
  3. pull 主要用在 Android 手机开发,是在跟 sax 非常类似都是事件机制解析 xml 文件

4 DOM4J 介绍

  1. Dom4j 是一个简单、灵活的开放源代码的库(用于解析/处理 XML 文件)。Dom4j 是由早期开发 JDOM 的人分离出来而后独立开发的。

  2. 与 JDOM 不同的是,dom4j 使用接口和抽象基类,虽然 Dom4j 的 API 相对要复杂一些,但它提供了比 JDOM 更好的灵活性。

  3. Dom4j 是一个非常优秀的 Java XML API,具有性能优异、功能强大和极易使用的特点。现在很多软件采用的 Dom4j。

  4. 使用 Dom4j 开发,需下载 dom4j 相应的 jar 文件

5 DOM4j 中,获得 Document 对象的方式有三种

● 开发 dom4j 要导入 dom4j 的包

1、读取 XML 文件,获得 document 对象

SAXReader reader = new SAXReader(); //创建一个解析器 
Document document = reader.read(new File("src/input.xml"));//XML Document

2、解析 XML 形式的文本,得到 document 对象

String text = "<members></members>";
Document document = DocumentHelper.parseText(text);

3、主动创建 document 对象

Document document = DocumentHelper.createDocument(); //创建根节点 
Element root = document.addElement("members");

6 DOM4j应用案例

  1. 使用 DOM4J 对 students.xml 文件进行增删改查
  • 重点讲解查询(遍历和指定查询)
  • xml增删改使用少,作为扩展,给出案例
  1. 引入 dom4j 的依赖的 jar 包,也可以使用maven配置

在这里插入图片描述

  1. 创建students.xml
<?xml version="1.0" encoding="utf-8"?>
<students>
    <student id="01">
        <name>小龙女</name>
        <gender></gender>
        <age>16</age>
        <resume>古墓派掌门人</resume>
    </student>
    <student id="02">
        <name>欧阳锋</name>
        <gender></gender>
        <age>18&l
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值