dom、SAX、Jdom、dom4j四种解析xml方式简单总结
2016-02-26 22:57
751 查看
1,dom和sax是java官方提供的解析方式,不需要导入额外jar包,dom甚至一种标准。 dom是一次性将整个xml文件dom结构加载进内存,因此比较占空间。
优点: *形成了树结构,直观好理解,代码更易编写 *解析过程中树结构保留在内存中,方便修改
缺点: !当Xml文件过大时,对内存消耗过大,容易影响解析性能并造成内存溢出。
2,sax是一种基于事件驱动的xml解析方式。在使用是需要编写专门的handler,在文档开头会触发startDocument()方法、解析到节点除法startElement(),节点闭合便签触发endElement()方法、文档结束触发endDocument()方法。
优点: *采用事件驱动模式,对内存消耗比较小; *适用于只需要处理解析xml中的数据的时候,不关心文档结构;
缺点: !不易编码,很难同时访问统一文档中的多处不同数据。
3,jdom和dom4j都是基于java平台基础解析技术即dom、sax,第三方开发出来的解析方式,需要相应jar包。 jdom仅使用具体类而不使用接口,api大量使用Collections类; dom4j其实是jdom的一种智能分支,包含许多超出基本xml的解析功能,使用了接口和抽象类,性能优异,灵活性好,功能强大极端易使用,且源码开放。
解析速度:sax最快>dom4j>jdom>dom(内存溢出)约
生成速度:sax最快>dom4j>jdom>dom(内存溢出)约,通解析速度
可以看出sax的速度优势是很大的,但是sax是基于事件的,不便于修改其文档结构,使用第三方时优先使用dom4j。
优点: *形成了树结构,直观好理解,代码更易编写 *解析过程中树结构保留在内存中,方便修改
缺点: !当Xml文件过大时,对内存消耗过大,容易影响解析性能并造成内存溢出。
2,sax是一种基于事件驱动的xml解析方式。在使用是需要编写专门的handler,在文档开头会触发startDocument()方法、解析到节点除法startElement(),节点闭合便签触发endElement()方法、文档结束触发endDocument()方法。
优点: *采用事件驱动模式,对内存消耗比较小; *适用于只需要处理解析xml中的数据的时候,不关心文档结构;
缺点: !不易编码,很难同时访问统一文档中的多处不同数据。
3,jdom和dom4j都是基于java平台基础解析技术即dom、sax,第三方开发出来的解析方式,需要相应jar包。 jdom仅使用具体类而不使用接口,api大量使用Collections类; dom4j其实是jdom的一种智能分支,包含许多超出基本xml的解析功能,使用了接口和抽象类,性能优异,灵活性好,功能强大极端易使用,且源码开放。
解析速度:sax最快>dom4j>jdom>dom(内存溢出)约
生成速度:sax最快>dom4j>jdom>dom(内存溢出)约,通解析速度
可以看出sax的速度优势是很大的,但是sax是基于事件的,不便于修改其文档结构,使用第三方时优先使用dom4j。
相关文章推荐
- 运行中的计算机
- 回朔法和递归解决八皇后和跳马问题
- CodeBlocks Color Theme 主题修改
- Android Fragment 深度解析
- 单调栈的介绍以及一些基本性质
- Apache+Tomcat负载均衡两种session共享方式的设置
- 用户选择,调用相应函数的编写方法
- http://www.cnblogs.com/yjf512/p/3164400.html
- JavaScript高级程序设计(第3版)第三章读书笔记
- WinForm应用只运行一次
- ios自动释放池
- 置换TextView文字
- ios-提升之【5】-viewController的loadView以及view的属性
- Linux运维细讲之vim的基础使用二
- 二分查找的递归和非递归
- Android--根据子控件的大小自动换行的ViewGroup
- poj 3308 Paratroopers 最小割 最小点权覆盖
- 如何使easyui在没有数据的情况下显示滚动条
- OpenCV学习11
- javascript闭包 -- 懂不懂由你,反正我是懂了