本文主要是介绍dom sax stax解析xml性能分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Java6.0野马(Mustang,Java 6.0代号)相比老虎(Tiger,Java 5.0代号)来说,从性能的提升、脚本语言(Javascript、JRuby、Groovy)的支持、对java.io.File的扩展到桌面应用的增强等各个方面,本领着实大了不少。Java 6.0对XML支持的新特性有许多方面。比如StAX、针对XML-Web服务的Java架构(JAX-WS)2.0、针对XML绑定的 API(JAXB)2.0、XML数字签名API,甚至还支持SQL:2003 'XML'数据类型。
StAX是Streaming API for XML的缩写,是一种针对XML的流式拉分析API。关于对XML进行分析(或解析)的技术,大家一定都不陌生了。
在Java 6.0之前,就已经有四种:
1. DOM:Document Object Model
2. SAX:Simple API for XML
3. JDOM:Java-based Document Object Model
4. DOM4J:Document Object Model for Java
StAX采用流模型中的拉模型分析方式。提供基于指针和基于迭代器两种方式的支持。
优点: 1、接口简单,使用方便。 2、采用流模型分析方式,有较好的性能。
缺点: 1、单向导航,不支持XPath,很难同时访问同一文档的不同部分。
为了比较这五种方式在解析XML文档时的性能表现,我们来创建三个不同大小的XML文档:smallusers.xml(100KB)、 middleusers.xml(1MB)、bigusers.xml(10MB)。我们分别用以上五种解析方式对这三个XML进行解析,然后打印出所有 的用户信息,并分别计算它们所用的时间。
单位:s(秒)
100KB | 1MB | 10MB | |
DOM | 0.146s | 0.469s | 5.876s |
SAX | 0.110s | 0.328s | 3.547s |
JDOM | 0.172s | 0.756s | 45.447s |
DOM4J | 0.161s | 0.422s | 5.103s |
StAX Stream | 0.093s | 0.334s | 3.553s |
StAX Event | 0.131s | 0.359s | 3.641s |
由上面的测试结果可以看出,性能表现最好的是SAX,其次是StAX Stream和StAX Event,DOM和DOM4J也有着不错的表现。性能最差的是JDOM。
所以,如果你的应用程序对性能的要求很高,SAX当然是首选。如果你需要访问和控制任意数据的功能,DOM是个很好的选择,而对Java开发人员来讲,DOM4J是更好的选择。 如果只需要做XML文档解析的话,综合性能、易用性、面向对象特征等各方面来衡量,StAX Event无疑是最好的选择。
这篇关于dom sax stax解析xml性能分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!