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.自定义模型 |