XML解析系列(三) -JDOM 技术解析实现介绍

一、简介

在上篇文章中,我们介绍了 SAX 解析技术!

经过整理,通过 Java 程序解析 XML 文件,目前比较主流的有以下四种方式:

  • DOM 解析
  • SAX 解析
  • JDOM 解析
  • DOM4J 解析

本篇介绍第三种解析技术:JDOM 解析!

二、JDOM 解析

JDOM 是 Java 生态中一个非常优秀的 XML 开源文档解析库,你可以把它看成是 DOM 及 SAX 的结合版,同时在设计上弥补了 DOM 及 SAX 在实际应用当中的不足之处。

优点如下:

  • 1.基于树的模型处理 XML 文件,数据会加载在内存中
  • 2.没有向下兼容的限制,因此比 DOM 简单
  • 3.速度快,缺陷少
  • 4.具有 SAX 的解析特征
  • 5.API 比 DOM 更容易理解

当然也有缺点:

  • 1.能处理大于内存的 XML 文档
  • 2.不支持与 DOM 中相应遍历包

总体来讲,JDOM 对于大多数需要使用 XML 应用程序来说还是非常实用的。

下面我们以如下的 XML 文件为例,介绍解析的实现过程。

<?xml version="1.0" encoding="utf-8" ?>
<class>
    <student id="1">
        <name>张三</name>
        <gender></gender>
        <age>26</age>
    </student>
    <student id="2">
        <name>里斯</name>
        <gender></gender>
        <age>36</age>
    </student>
	<student id="3">
        <name>王五</name>
        <gender></gender>
        <age>24</age>
    </student>
</class>

JDOM 实现过程如下:

<!--jdom -->
<dependency>
    <groupId>org.jdom</groupId>
    <artifactId>jdom</artifactId>
    <version>1.1.3</version>
</dependency>
import org.jdom.Attribute;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import java.io.InputStream;
import java.util.List;


public class JdomDemo {

    public static void main(String[] args) throws Exception {
        // 1.获取xml文件流
        InputStream inputStream = JdomDemo.class.getClassLoader().getResourceAsStream("demo.xml");
        // 2.创建SAXBuilder对象
        SAXBuilder saxBuilder = new SAXBuilder();
        // 3.将输入流加载到build中
        Document document = saxBuilder.build(inputStream);
        // 4.获取根节点
        Element rootElement = document.getRootElement();
        // 5.获取子节点
        List<Element> children = rootElement.getChildren();
        for (Element child : children) {
            List<Attribute> attributes = child.getAttributes();
            // 遍历标签属性
            for (Attribute attr : attributes) {
                System.out.println(attr.getName()+":"+attr.getValue());
            }
            // 遍历标签子节点
            List<Element> childrenList = child.getChildren();
            for (Element  o: childrenList) {
                System.out.println(o.getName() + ":" + o.getValue());
            }
            System.out.println("==============");
        }
    }
}

运行结果如下:

id:1
name:张三
gender:男
age:26
==============
id:2
name:里斯
gender:男
age:36
==============
id:3
name:王五
gender:女
age:24
==============

三、小结

最后总结一下,JDOM 是 Java 生态中一个非常优秀的 XML 开源文档解析库,你可以把它看成是 DOM 及 SAX 的结合版,同时在设计上弥补了 DOM 及 SAX 在实际应用当中的不足之处。

写到最后

不会有人刷到这里还想白嫖吧?点赞对我真的非常重要!在线求赞。加个关注我会非常感激!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值