您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 造纸印刷 > XML解析技术浅析(定稿)
I摘要本文主要研究XML的解析的手段与方法,对不同的文件要用不同的解析技术,例如根据文件的大小,文件的修改,浏览的需求不同要用到不同的解析技术。XML有两种基本的方式:树和流。树解析方式需要将整个XML文档加载到内存中。树文件结构允许随机访问文档元素和编辑XML。树型解析的例子包括DOM和SimpleXML。这些解析器都在内存中以不同但可互操作的格式共享树状结构。和树解析方式不同,流解析不需要将整个文档加载到内存中。这里的流和流音频中的流意思很相近。其用途和目的都一样,就是每次提交少量数据以节约带宽和内存。在流解析中,只能访问当前解析的节点,并且不能将XML作为一个文档来编辑。基于树的解析器之所以称为基于树的解析器,是因为它们将整个XML文档加载到内存中,并把文档的根作为主干,把所有的儿子、孙子和它们的后代以及属性作为分支。基于流的解析器之所以称为基于流的解析器,是因为它们采用和流式音频同样的原理来解析XML流,处理一个特殊节点,完成之后则将其完全忘掉。随着XML的广泛应用,大量的信息都将通过XML文档来进行存储、交换,因此XML解析技术成为XML应用的关键。本文通过对4种解析技术进行分析和总结,同时本文也介绍了XML解析技术的实现细节,总结归纳了在应用系统中选择合适的XML解析技术的方法,加深理解实现选择解析技术的原则。关健字:XML,XML解析,Sax,Dom4J,JAXBII目录摘要.......................................................................................................................I引言.......................................................................................................................1第1章XML重要性...........................................................................................3第2章XML解析技术分析...............................................................................52.1XML解析技术的分类............................................................................52.2面向文档的流式解析技术.....................................................................52.2.1推式解析(SAX解析技术)...........................................................62.2.2拉式解析(StAX解析技术)..........................................................72.3面向文档的对象式解析技术.................................................................82.4面向文档的指针式解析技术.................................................................92.5面向应用的对象式解析技术...............................................................112.6四种XML解析技术的特性比较.......................................................14第3章XML解析技术的选取..........................................................................153.1面向文档与面向应用的解析方式的选取.........................................153.2面向文档的解析方式的选取............................................................153.3面向文档解析方式的性能比较........................................................16第4章总结.......................................................................................................17致谢.....................................................................................................................18附录.....................................................................................................................191.Dom4J(Java).............................................................................................192.JDOM(Java).............................................................................................21参考文献.............................................................................................................241引言XML(eXtensibleMarkupLanguage,可扩展标记语言)是由WorldWideWeb联盟(W3C)定义的元语言,即一种关于语言的语言,因此XML不是一个依附于特定浏览器的语言。XML的设计源于SGML(StandardGeneralizedMarkupLanguage,标淮通用标记语言),是SGML的子集,其目的是为了促进Internet上结构化文档的交换。专家们使用SGML精简制作,并依照HTML的发展经验,产生出一套使用上规则严谨,但是简单的描述资料语言:XML。XML是在一个这样的背景下诞生的——为了有一个更中立的方式,让消费端自行决定要如何消化、呈现从服务端所提供的资讯。XML被广泛用来作为跨平台之间交互数据的形式,主要针对数据的内容,通过不同的格式化描述手段(XSLT,CSS等)可以完成最终的形式表达(生成对应的HTML,PDF或者其他的文件格式)。1996年W3C联盟就开始从事XML的标准化工作,并于1998年2月10日发布了XML1.0。XML的出现给分布式计算领域带来了重大影响,其力量源于它的数据独立性。XML是纯数据描述,与编程语言、操作系统或传输协议无关,从而将数据从以代码为中心的基础结构所产生的约束中解放出来,让数据能够在Web上更自由的流通。XML与Access,Oracle和SQLServer等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,XML仅仅是展示数据。事实上XML与其他数据表现形式最大的不同是:他极其简单。这是一个看上去有点琐细的优点,但正是这点使XML与众不同。XML与HTML的设计区别是:XML是用来存储数据的,重在数据本身。而HTML是用来定义数据的,重在数据的显示模式。XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与Windows,MacOS,Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析他,并以XML格式输出结果。为了使得SGML显得用户友好,XML重新定义了SGML的一些内部值和参数,去掉了大量的很少用到的功能,这些繁杂的功能使得SGML在设计网站时显得复杂化。XML保留了SGML的结构化功能,这样就使得网站设计者可以定义自己的文档类型,XML同时也推出一种新型文档类型,使得开发者也可以不必定义文档类型。2然而XML本身只是以纯文本对数据进行编码的一种格式,要想利用XML,或者说利用XML文件中所编码的数据,必须先将数据从纯文本中解析出来,因此,必须有一个能够识别XML文档中信息的解析器,用来解释XML文档并提取其中的数据。然而,根据数据提取的需求不同,又存在着多种解析方式,不同的解析方式有着各自的优缺点和适用环境。选择合适的XML解析技术能够有效提升应用系统的整体性能,因此,了解和区分各种不同的XML解析技术就显得尤为重要。3第1章XML重要性1.标准化与其它Web服务技术相比,标准化是XML特色之一。XML提供了Web服务应用程序之间传输数据的标准格式。万维网联盟(W3C)管理XML标准并发布给全球的XML技术提供者,这就确保了XML产品的兼容性。除了XML引擎和产品外还有XML文法(grammar)。每一个XML语法都是一种在某个特定问题领域进行数据格式化的标准方法。遵循并采用XML文法,你就可以使两个应用程序间通信的数据格式标准化。2.接口协议程序员在对接口进行编程时经常将它称之为协议。从编程的角度出发,接口在没有暴露实现的情况下提供了编程结构。如果使用DTD(文件类型定义)和大纲(schema),那么XML就有类似的特性。DTD和大纲都用来描述XML文档的结构以及XML文档的建立规则。可以用一个(或者多个)相关DTD(或者大纲)组织这样的规则集合,我们称之为XML文法。XML文法不仅可以用于应用程序之间通信的标准化,还可以为开发者提供一个接口协议。换句话说,开发者在创建一个需要使用XML文档结构的应用程序时,他不需要知道文档是如何实现的(即实际的XML文档)。DTD以及大纲描述了文档的结构,它们可以作为开发的接口协议。对DTD的任何改动同时也改变了协议。3.简化XML文档的另一个重要方面就是它的简化特性。这不表示XML的实现很简单,而是说XML的概念和一般方法简单。例如,XML是基于文本文档的,这就简化了打开XML文档并查看其内容的过程。用XML简化Web服务模型很方便,这一点也很重要。Web服务天然就比单独的XML要复杂。假设XML和CORBA同样复杂,而且其它Web服务技术的复杂度相同,那么Web服务技术就会变得非常笨重。但是通过使用简单的搭积木的方法,如XML、SOAP等等,可以控制Web服务的复杂度在一个可以容忍的范围之内,这样用它创建的应用程序不会于难以控制。4.封装4封装是XML重要特性之一,在开发Web服务的时候尤其如此。从本质上来说,封装指的是获得一个或者多个数据块(chunksofdata)并把它们集合成一个简单对象(而不是几个独立对象)的概念。封装与集合(aggregation)类似,但是它们之间有一个重要的差别,即封装一般意味着它没有外部依赖性。可以创建带有外部依赖性的XML文档;但是在事务Web服务模型(TransactionalWebservicesmodel)中,利用封装会显得更加明智。通过设计包装了依赖性的XML解决方案,一般都可以消除事务
本文标题:XML解析技术浅析(定稿)
链接地址:https://www.777doc.com/doc-2868170 .html