一. SAX
解析
解析方式是事件驱动机制
!
SAX
解析器
,
逐行读取
XML
文件解析
,
每当解析到一个标签的开始
/
结束
/
内容
/
属性时
,
触
发事件
.
我们可以编写程序在这些事件发生时
,
进行相应的处理
.
优点
:
1.分析能够立即开始,而不是等待所有的数据被处理
2.逐行加载
,
节省内存
.
有助于解析大于系统内存的文档
3.有时不必解析整个文档
,
它可以在某个条件得到满足时停止解析
.
缺点
:
1.
单向解析,无法定位文档层次,无法同时访问同一文档的不同部分数据
(
因为逐
行解析
,
当解析第
n
行是
,
第
n-1
行已经被释放了
,
无法在进行操作了
).
2.
无法得知事件发生时元素的层次
,
只能自己维护节点的父
/
子关系
.
3.
只读解析方式
,
无法修改
XML
文档的内容
.
二. DOM
解析
是用与平台和语言无关的方式表示
XML
文档的官方
W3C
标准,分析该结构通常需要加载整个
文档和内存中建立文档树模型
.
程序员可以通过操作文档树
,
来完成数据的获取 修改 删除等
.
优点
:
1.文档在内存中加载
,
允许对数据和结构做出更改
.
2.访问是双向的,可以在任何时候在树中双向解析数据.
缺点
:
文档全部加载在内存中
,
消耗资源大
. (由于这个缺点可以忽略不计,所以一般使用这个)
3. JDOM
解析(基于DOM解析)
目的是成为
Java
特定文档模型,它简化与
XML
的交互并且比使用
DOM
实现更快。由于是
第一
个
Java
特定模型,
JDOM
一直得到大力推广和促进。
JDOM
文档声明其目的是
“
使用
20%
(或更少)的精力解决
80%
(或更多)
Java/XML
问题
”
(根据学习曲线假定为
20%
)
优点
:
1.使用具体类而不是接口,简化了
DOM
的
API
。
2.大量使用了
Java
集合类,方便了
Java
开发人员。
缺点
:
1.没有较好的灵活性。
2.性能不是那么优异。
4. DOM4J
解析 (基于DOM解析)
它是
JDOM
的一种智能分支。它合并了许多超出基本
XML
文档表示的功能,包括集成
XPath
支持、
XML Schema
支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项,
DOM4J
是一个非常优秀的
Java XML API
,具有性能优异、功能强大和极端易用使用的特点,同时它也是一
个开放源代码的软件。如今你可以看到越来越多的
Java
软件都在使用
DOM4J
来读写
XML
。
目前许多开源项目中大量采用
DOM4J ,
例如
:Hibernate