标签:
XML在不同的语言里解析方式都是一样的,两种基本方法:
特点 | 优点 | 缺点 | |||
DOM | 基于XML文档树结构 | 解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来操作这个树结构 | 整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能 | 内存要求大,处理复杂XML困难 | |
SAX | 基于事件流 | 当解析器发现元素开始、元素结束、文本、文档的开始或结束等时,发送事件,程序员编写响应这些事件的代码,保存数据。 | 不用事先调入整个文档,占用资源少 | 不是持久的;事件过后,若没保存数据,那么数据就丢了;无状态性,(适合只读??) | |
DOM4J | 灵活、完整的解决方案,处理所有JAVA/XML问题。 | DOM4J 是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多的Java 软件都在使用DOM4J 来读写XML,特别值得一提的是连 Sun 的JAXM 也在用DOM4J。 | 它合并了许多超出基本XML文档表示的功能,包括集成的XPath支持、XML Schema支持以及用于大文档或流化文档的基于事件的处理。 |
java实现 | |
JDOM |
Java实现 | 20-80原则,极大减少了代码量。 | 使用场合:要实现的功能简单,如解析、创建等,但在底层,JDOM还是使用SAX(最常用)、DOM、Xanan文档。 | java实现 |
比较:
1)DOM4J性能最好,连Sun的JAXM也在用DOM4J。目前许多开源项目中大量采用DOM4J,例如大名鼎鼎的Hibernate也用DOM4J来读取XML配置文件。如果不考虑可移植性,那就采用DOM4J.
2)JDOM和DOM在性能测试时表现不佳,在测试10M文档时内存溢出。在小文档情况下还值得考虑使用DOM和JDOM。虽然JDOM的开发者已经说明他们期望在正式发行版前专注性能问题,但是从性能观点来看,它确实没有值得推荐之处。另外,DOM仍是一个非常好的选择。DOM实现广泛应用于多种编程语言。它还是许多其它与XML相关的标准的基础,因为它正式获得W3C推荐(与基于非标准的Java模型相对),所以在某些类型的项目中可能也需要它(如在JavaScript中使用DOM)。
3)SAX表现较好,这要依赖于它特定的解析方式-事件驱动。一个SAX检测即将到来的XML流,但并没有载入到内存(当然当XML流被读入时,会有部分文档暂时隐藏在内存中)。
参考:
XML解析4种方式比较:http://blog.csdn.net/jzhf2012/article/details/8532873
标签:
原文地址:http://my.oschina.net/u/2266556/blog/513168