http://xml.apache.org/commons/
-commons is focussed on common code and guidelines for projects. The first focus will be to organize and have common packaging for the various externally-defined standards code relating to - things like the DOM, SAX, and JAXP interfaces.
As the
-commons community forms, we also hope to serve as a holding area for other common -related utilities and code, and to help promulgate common packaging, testing, documentation, and other guidelines across all .apache.org subprojects.
Betwixt Services for mapping JavaBeans to documents, and vice versa.
Digester | -to-Java-object mapping utility. |
Jelly | based scripting and processing engine. |
SC | An implementation of the State Chart | specification aimed at creating and maintaining a Java SC engine. It is capable of executing a state machine defined using a SC document, and abstracts out the environment interfaces.
|
|
Framework to define validators and validation rules in an file. |
Java6.0新特性StAX--全面解析
野马(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技术,因为它在我们的开发中将被使用地更加频繁。
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
关于它们的解析原理,以及性能和优缺点,
JWSDP是用来开发Web Services、Web应用程序以及Java应用(主要是XML处理)的开发包。它包含的Java API有:
- JAXP:Java API for XML Processing
- JAXB:Java Architecture for XML Binding
- JAX-RPC:Java API for XML-based Remote Procedure Calls
- JAX-WS:Java API for XML Web Services
- SAAJ:SOAP with Attachments API for Java
- JAXR:Java API for XML Registries
- Web Services Registry
JWSDP的早期版本中还包括:
- Java Servlet
- JSP:JavaServer Pages
- JSF:JavaServer Faces
现在,JWSDP已经被GlassFish所替代。
StAX包括两套处理XML的API,分别提供了不同程度的抽象。它们是:基于指针的API和基于迭代器的API。
五、StAX(Streaming API for XML)
流模型中的拉模型分析方式。提供基于指针和基于迭代器两种方式的支持。
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无疑是最好的选择。
附录:
附件中包含该文章中用到的全部示例代码,分为两个Eclipse工程:GreatTestProject和XMLTest,均可编译执行。 GreatTestProject是对StAX API的示例代码;而XMLTest所有五种解析方式的使用示例,并可以针对它们做性能测试。其中,XMLTest工程的jar包默认是用maven来管 理的,你可以根据需要修改。
http://www.java3z.com/cwbwebhome/dir1/dir8/StAX-XML.rar
在Android中解析XML数据
http://www.williamhua.com/2009/05/26/xml-parsing-in-android/
在Android中解析XML数据
http://www.williamhua.com/2009/05/26/xml-parsing-in-android/
JAVA解析XML的方式DOM、SAX、DOM4J、JDOM、StAX之详解与比较
http://sundful.iteye.com/blog/734388
http://wghjay.iteye.com/blog/519955
DOM、SAX、DOM4J、JDOM和JDK1.6中新增的StAX生成XML数据格式,并返回XML字符串形式
http://dreams75.iteye.com/blog/512319
http://hi.baidu.com/comdeng/blog/item/76585a165c367b4d20a4e9db.html
这几天正在做一个rss解析的java小程序,需要从指定的一个rss里边分析出文章列表,然后和数据库里边现有文章进行匹配,如果没有被抓取过,则入库。
经高人指点,使用了“Xml Pull Parser” 来进行xml解析,采用了基于文件流的解析方式,一般被用来对xml文档进行快速而高效地解析。通过oracal网站的一篇《Parsing XML Efficiently 》,发现这种解析技术实际上属于StAP的一种。这篇文章对时下的Xml解析技术进行了总结和归纳,对于想进行xml解析的技术人员来说还是具有参考价值的,因此顺带整理翻译了一下。
原文地址:http://www.oracle.com/technology/oramag/oracle/03-sep/o53devxml.html
——————————————————————————
Java 里边解析 xml 一般有三种常用的技术:
1、 Document Object Model (DOM) , W3C 里边一种成熟的标准。
2、 Simple API for XML (SAX) ,第一种被广泛接受的 XML 的 API ,成为事实上的标准。
3、 Streaming API for XML (StAX) ,在 JSR-173 中提到的一种很有前途的新型解析模型。
DOM 解析是基于树结构的,它通过在内存构建整棵文档树,允许完全、动态访问 XML 文档的任何节点。
2 、 SAX
SAX 解析 XML 采用事件驱动的方式。虽然并不是 W3C 的标准,但它的 API 是公认的,很多解析器都是基于它的。当 SAX 解析器读取文档的时候会引发很多事件,这些事件会交给对应的事件处理者 (event handlers) 。三种基本的事件:
1. DTDHandler 访问 XML 的 DTD 内容
2. ErrorHandler 解析错误
3. ContentHandler 访问文档的内容
3、 StAX
StAX 是一种令人振奋的新型解析技术,和 SAX 一样,它也采用了事件驱动模型。不过,在对于事件的处理上, SAX 采用了“推模式”( push modal ),而 StAX 则使用的是“拉模式”( pull model )。说得更加明白一些,就是这样:
SAX 是自己按顺序把整个文档解析完,在它解析的过程,会主动产生事件交给程序中相应的处理函数来处理当前内容;而 StAX 是由程序来驱动整个解析过程,只有当程序发出解析请求的时候,解析器才会告诉相应的事件,然后程序再决定如何处理当前内容。
从这个原理来判断的话, StAX 的实现显然要更加灵活,程序可以选择自己需要处理的部分,而 SAX 则一定会遍历整个文档。而据我的理解,将 StAX 叫成“程序驱动模型”可能更利于理解一些。
最后,来个表格进行一下概述:
技术 |
有利 |
局限 |
适用于 |
DOM Parsing |
1.易于上手 2.丰富的 API ,易于访问 3.整棵树被载入内存,能随机访问节点 |
1.整个文档必须一次解析完 2.载入文档树到内存代价昂贵 3.不利于实现对象类型绑定,需要给所有节点创建单独的类型 |
需要修改 xml 或者用来处理 XSLT (不要用在对 XML 只有读操作的程序中) |
SAX Parsing |
1.没有将整个文档读入内存,内存耗费较低 2.“ 推模式 ” 允许注册多种内容处理器 |
1.没有内建的文档导航支持 2.不能随机访问 XML 文档 3.不支持命名空间 |
对 XML 只有读操作的程序(不要用来操作和修改 XML 文档) |
StAX Parsing |
1.有针对简单和性能的两种解析模式 2.由程序控制解析器,易于支持多输入( easily supporting multiple inputs ) 3.强大的过滤功能有利于数据检索
|
1.没有内建的文档导航支持 2.不能随机访问 XML 文档 3.不支持修改 XML 文档
|
需要对 XML 文档进行流处理而且支持命名空间的程序(不要用来操作和修改 XML 文档) |
end
相关推荐
java 解析xml 方法 sax jdom dom stAX
Java 四种方式操作xml,包括xml,dom,sax,jdom这四种方式的一个简单例子。
java中四种操作(dom、sax、jdom、dom4j)xml方式详解与
常用的java处理导入xml的4种方式。 可以上官网下载最新的资源包。 每种方式都给出了测试的例子,可以自己测试下。
Java解析XML汇总DOM_SAX_JDOM_DOM4j_XPath 实例
用用4中方式(dom4j、jdom、dom、sax)解析xml
xml doc sax jdom dom4j完全讲解xml doc sax jdom dom4j完全讲解 xml doc sax jdom dom4j完全讲解 xml doc sax jdom dom4j完全讲解 xml doc sax jdom dom4j完全讲解 xml doc sax jdom dom4j完全讲解 xml doc sax ...
有四种方法 DOM DOM4j JDOM SAX 和相对路径的写法 ,代码是有注释的,通用型的……应该对大家有帮助
XML解析四种解析方式 DOM SAX JDOM DOM4J
XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较,超详细XML的四种解析器原理及性能比较,超详细
java操作xml的4中方法中各自所需要的包
总结DOM、SAX、JDOM、DOM4J读写xml文档的多种方法。
java四种xml解析实例和jar包,包括dom,sax,dom4j,jdom等方式 java四种xml解析实例和jar包,包括dom,sax,dom4j,jdom等方式 是学习Java的xml解析的好例子,包括相应的dom4j.jar,jdom.jar等,自己整理的,物超所值啊,...
用DOM SAX JDom dom4j 对xml文档解析实例 在学习孙鑫老师视频教程,自己照着敲的源码,希望对大家有帮助
JAVA读XML:sax,dom,jdom,dom4j的比较以及选择.doc
4种最主流、最全面、最详细的生成和解析xml的4种方式,包括Dom,Dom4j,Sax,JDom,读懂了绝对好用xml,非常好的入门项目,而且精心排版,逻辑清晰
dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的...
JAVA解析XML文件的其中两种方式,利用dom4j.jar及JDOm.jar两种JAR包解析
NULL 博文链接:https://dreams75.iteye.com/blog/512319