天天看点

Java 解析 XML :DOM 和SAXJAVA 解析 XML :DOM 和SAX两种方式区别表

JAVA 解析 XML :DOM 和SAX

两种方式

通常有两种方式:DOM 和SAX。

DOM(文档对象模型)

DOM是W3C标准,提供了标准的解析方式,但其解析效率一直不尽如人意,这是因为DOM解析XML文档时,把所有内容一次性的装载入内存,并构建一个驻留在内存中的树状结构(节点树)。如果需要解析的XML文档过大,或者我们只对该文档中的一部分感兴趣,这样就会引起性能问题。

SAX(XML解析的替代方法)

SAX(simple API for XML)是一种XML解析的替代方法。相比于DOM,SAX是一种速度更快,更有效的方法。它逐行扫描文档,一边扫描一边解析。而且相比于DOM,SAX可以在解析文档的任意时刻停止解析,但任何事物都有其相反的一面,对于SAX来说就是操作复杂。

  • 优点:不用事先调入整个文档,占用资源少。尤其在嵌入式环境,如Android,极力推荐采用SAX进行解析。
  • 缺点:不像DOM一样将文档树长期留驻在内存,数据不是长久的。事件过后,若没保存数据,那么数据就会丢失。
  • 使用场合:机器有性能限制,尤其是在嵌入式环境。

区别表

DOM SAX
速度 效率不高,占用资源较多 速度更快,更高效 ,占用资源少
方式 所有内容一次性装入 逐行扫描,一边扫描一边解析,可随时停止
数据存储 长久驻留,构建节点数 没有保存就会丢失
数据处理 任意存取, 没有次数限制,可读可改 只读一次, 不能随意读取,只读一次不能修改
复杂度 简单易于开发 复杂,开发比较困难
适合场合 1.XML文档较小2.需要对文件进行修改,对文件进行存取 1.大型文档2.机器有性能限制,尤其是在嵌入式环境 3.只需读4.自定义模型