版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、below摘 要本文研究了xml解析技术,介绍了sax,dom,和vtd-xml技术以及一种基于xml的数据通信模型。文中首先对xml产生背景和未来的发展趋势进行了介绍,分析了xml文档数据解析的必要性以及快速解析理论。在第二章中具体讲解了在xml文档中的语法和相应的格式和标准。第三章中详细介绍了xml解析方式dom和sax,并对两种方式进行了性能的比较,并在最后介绍了vtd-xml解析技术。在分析了现有解析方式优劣的基础上,第四章重点讨论了xml在监控系统的数据通信模型中的设计与实现。关键词:xml解析;dom;sax;虚拟令牌环;数据通信模型abstractthis thesis stud
2、ies a parsing technology of extensible markup language,introduces sax,dom,vtd-xml and an communicationing model that based on xml technology.in the first part of the thesis,the developed background and developing trend of xml are introduced,the necessity of xmldocument parsing and fast parsing theor
3、y are also analyzed.the grammar and formsrelated to xml document are discussed in chapter two.the third part introduces thepresent parsing methods dom and sax and makes comparison of their performances,and introduces the vtd-xml parsing technology.on the basis of the first three chapters,chapter fou
4、r discusses the design and implement of xml technology in data communicationing model.keywords: xml parsing;dom;sax;vtd;data communicationing model目 录i目 录第一章 绪论31.1论文研究背景31.2论文研究内容及结构3第二章 可扩展标记语言32.1xml技术的产生32.2xml文档语法基础32.2.1文档说明32.2.2标记32.2.3实体引用32.2.4注释32.2.5处理指令32.2.6cdata段32.3xml相关技术和标准32.3.1dt
5、d和模式32.3.2名域32.3.3xlink32.3.4xsl32.4本章小结3第三章 xml解析技术基础33.1解析原理33.2xml解析器工作模式33.3文档对象模型33.3.1dom结构33.3.2dom的优缺点33.4基于事件的简单应用编程接口(sax)33.4.1sax结构33.4.2sax的优缺点33.5基于虚拟令牌环的xml解析技术33.5.1vtd-xml概述33.5.2vtd-xml原理结构33.5.3vtd-xml优点33.6本章小结3第四章 一种基于xml的数据通信模型的设计与实现34.1监控系统的数据通信34.2系统模型的建立34.3系统实现34.3.1网络文件传输3
6、4.3.2xml文件封装协议34.3.3xml文件控制34.4本章小结3第五章 总结与展望3致谢3参考文献3above3第一章 绪论1996年,w3c组织开始设计一种web数据存储和交换的标准,这就是xml(extensible markuplanguage,可扩展标记语言),它使得现有的因特网协议和软件更为协调,从而简化了对数据的处理和传输。xml所拥有的可扩展性、自描述性、自相容性以及跨文种等优点,使得它非常适于web上的数据交换与信息发布,被广泛应用到电子商务、电子政务、web服务等许多领域。目前很多国际著名的公司已完全加入到xml支持者的行列,如微软ie6.0已广泛使用了xml,net
7、scape新版本也将会支持xml,其它公司,包括ibm,adobe,sun和xerox等也宣布支持xml,并都在着手相关产品的研制。相对于html的“所见即所得”,xml将数据和显示信息分离,被称为“文档数据库”,这就使xml文档很适合于描述数据库中的数据。而其它非标准化、非结构化的数据转换为xml文档后,就可以将大量遗留数据实现信息共享和交换。xml解析技术是操作xml文档的重要环节,它在实现把非结构化数据转换为xml数据的过程中,起着重要的作用1 逯鹏.xml文档解析技术及其应用.郑州工业大学学报.2002年第23卷第4期.。1.1 论文研究背景xml(extensible markup
8、language)可扩展标记性语言,是w3c组织认可的文档数据格式标准,是sgml(standard generalized markup language,标准通用标记语言)的子集,保留了sgml主要的使用功能,同时大大缩减了sgml的复杂性。它独立于任何语言和体系结构,是公认的下一代网络标记语言。由于xml文档能应用在不同平台上,实现数据的协同工作,它现在已成为不可缺少的企业技术的一部分。比如,xml增加了在商场中的电子商务和交流沟通,以及公司内部多样数据的综合。xml的使用因此而快速增长,分析家ron schmelzer预测,到2006年,xml将由2003年网络流量的3%上涨至24%,
9、并且到2008年将至少上涨至40%。然而,对不断增长的xml文档的执行引起了一个关键的问题:由于文档中每个元素都包含了相当大的元数据,所以xml文档就包含了大量的数据。这便造成了程序处理的低效,并且给公司网络、处理器和存储结构都带来了很大的负载压力,这就导致了xml的两个关键问题:冗长和性能。1. 冗长:以xml格式储存的数据要比以其他数据库格式储存占有的空间要大的多。2. 性能:由于xml固有的冗余特性,对xml数据的管理将增大应用服务器的负担。1.2 论文研究内容及结构应用xml文档主要有三个技术环节,包括对xml文档的编辑、xml文档的解析和显示或使用xml文档的数据。xml文档的编辑目
10、前有两种方式:一种是使用通用的编辑器生成xml文档,如notepad;另一种是使用xml ide(集成开发环境),如xmlspy等工具。也可以针对具体应用开发某种专用的可视化xml编辑器。xml文档解析的主要任务是检查编辑的xml文档是否是结构完整(well-formed)和合法的(validate)。如果xml解析器发现xml文档中的数据或者结构不完整,就会向应用程序报告一个“致命”错误,而且不再会以正常的方式向应用程序传递数据或xml结构。xml的解析技术在xml文档的应用过程中有着重要的作用,它的行为减少了应用程序处理xml数据的负担,为应用程序和数据库提供了可操作的数据。换句话说,xm
11、l解析器是xml文档应用的基础。本文章节安排如下:第一章对xml的发展、xml解析技术的分类和本文研究背景进行了简要介绍。第二章介绍了xml文档的特点和xml语法基础以及相关技术和标准,对全文的进一步研究作了基础性的铺垫。第三章首先说明了xml解析的必要性以及解析原理,并详细讲解了基于对象的解析方式(dom)和基于事件的解析方式(sax)。在此基础上,进一步比较了两者的优缺点,分析了它们不能够进行普遍应用的原因。然后介绍了vtd-xml解析结构的原理。第四章在前三张的地主之上,重点研究了一种基于xml数据通信模型的设计与实现。第五章是本论文的结束部分,对全文做统一总结,并简要概括了本文未详细讨
12、论的如何使vtd记录具有唯一性的内容。最后是致谢、参考文献。below37第二章 可扩展标记语言2.1 xml技术的产生上个世纪的80年代,sgml(standard generalized markup language,标准通用标记语言)作为文档说明工具而被世人所知,并成为国际标准组织(iso)的一项国际标准,即iso8879。不过,由于sgml过于详细和复杂,所以一直没有在全球范围内被广泛地采用。而从sgml衍生出来的html(hyper text markuplanguage,超文本标记语言),凭借其简洁性使得每个人都可能创建web页面并将它们推向外部世界,从而迅速成为在网上制作页面的
13、标准语言格式2 norman walsh.a technical introduction to xml.。但是,随着web的应用越来越广泛和深入,人们渐渐发现html的不一致和不可扩展等缺陷严重阻碍了它的进一步发展。尽管html推出了一个又一个新版本,却始终满足不了不断增长的需求。1996年11月,在波士顿sgml世界年会上,internet homepage的撰写标准html被宣告终结,取而代之的是另一个电子文件格式化通用标准xml(extensible markup language,可扩展标记语言)。xml是一个更具弹性、更容易添加新功能而又具有统一标准的语言格式,它的目标是以目前用h
14、tml尚不可能的方法在web上服务、接受和处理sgml。与用来定义某一类文件格式的html等传统标记语言不同,xml本身不是一个单一的标记语言,而是一种元语言(meta-language),可以用来创造类别文件的格式定义,也就是在xml之中创造出很多不同的新标记语言,用来定义不同的文件类别。2.2 xml文档语法基础xml解析器读取两类xml文档:良构文档和有效文档。良构文档语法上正确,满足xml规范描述的生成规则,但不一定符合某个dtd。有效文档则已经针对某个dtd验证过了。xml文档由两个或多个主文档实体组成:文档首部、文档实例以及可能拥有的任何处理指令。文档首部就像一个引导记号,给处理器
15、提供关于如何处理文档主体(即文档实例)的指示。处理指令可任意出现在文档首部或文档实例中。它们用于在xml分析器外给另一个处理应用发送指示。xml文档的基本语法由w3c创建的一个文档所定义的一组规则所规定。在深入了解xml文档结构之前,先需要了解以下几条基本语法规则3 陆新年,陆新宇等.xml揭秘入门.应用.精通.北京:清华大学出版社.2001.6: xml区分大小写,元素的起始标注必须正好匹配结束标注。 所有起始标注必须有结束标注,即所有xml文档都必须包含一个根元素,这个根元素是包含了文档所有内容的最外层元素。 元素必须正确的嵌套。文档中元素不是孤立的(除非只有一个元素根元素),所有元素都必
16、须包含在以根元素开始的元素层次中。 xml用五种预定义实体“<;”、“>;”、“&;”、“&apos;”和“";”来分别代替“”、“&”、“”和“”字符。 xml说明优先,即如果使用一个xml说明,它必须最先出现。为了更好地理解xml语法的主要组成部分,图2.1包含一个用来保存联系信息的xml地址簿。下面用该例子来具体讲解不同xml语法组成部分的作用。 frank rizzo 12 12 w street new york new york 10011 212-555-1212212-555-1213 frizzo frank's ratchet service
17、 图2.1 xml地址簿文件2.2.1 文档说明所有的xml文档都以首部开始,即使首部中没有任何内容。文档首部由出现次序固定的几个部分组成,下面按顺序列出4 heather williamson.xml技术大全.北京机械工业出版社.2002:l xml说明文档示例的第一句就是该文档的xml说明,它是xml文档中最先出现的东西,由一个左尖括号、后跟一个问号(没有空格)、再跟三个字符xml组成。该说明有三个组成部分: version=“1.0”是版本说明,表示该文档遵循xml1.0规范; encoding=“utf-8”是编码说明,表示采用utf-8作为编码方式; standalone=“yes”
18、是独立说明,指出该文档在一个文件里完成,不需要从外部导入文件。l 各种语句各种语句可能包括注释,它们是描述文档目的的记号。在图2.1的文档示例中,就是注释。注释可以出现在首部或文档实例中,总是以“”字符结束。注释是调试代码的好方法,它不是为机器准备的,而是供人阅读的,因此分析器总是不理会“”中间的一切。此外,注释不能嵌套在定义一个元素名的标注内,且注释中不能再包含注释。l 文件类型说明文件类型声明在xml中用来在文件中详细地说明文件信息,其中包括文件根元素和文件类型定义(document type definition,dtd)5 elliotte rusty harold.xml使用大全.中
19、国水利出版社.2002。文件的文件类型声明对于确定一个文件是否有效或是否仅仅是结构良好的来说是非常重要的。文件类型声明有如下三个主要作用: 指定文件的根元素。 为文件定义元素、属性和实体的细节(内部dtd)。 指出文件的外部dtd。如果dtd完全嵌套在文档中,那么它的说明语句也在该文档中,这叫做嵌套文档类型说明。如果链接dtd,那么说明包括指示xml分析器到哪去寻找该dtd的链接信息,这叫做链接文档类型说明。地址簿文件的例子说明了文件类型声明的这些功能是怎样实现的。在该例子中使用了下面的文件类型声明:在文件类型声明中明确地指定了文件的根元素是addressbook元素,文件的外部dtdaddr
20、essbook.dtd在文件的类型声明中也被明确地引用。xml解析器使用这些dtd来验证文件是否有效。2.2.2 标记标记(tag)是xml语法中最显而易见的组成部分,它被用来描述元素。在地址簿的例子中,元素city是由标记和构成的。为了便于理解,可以将“元素”这个主语理解为逻辑上的标记片段,而“标记”是指用来在xml文件中表示元素的文本字符串。xml元素可以是空的,这意味着元素可以不含有任何解析的字符数据。在html中的元素br就是一个空元素,因为它不含有任何字符数据。然而xml语法不允许在传统的html风格下使用标记来使用元素br。xml中空元素的标记必须在元素名之后用一个斜杠(/)用来指
21、出它是空的。因此,标记在xml中的用法就变成了。html中空元素的语法来自结束标记的格式。比如,html中元素head被编为一对标记和。第二个标记中的斜杠指出它是这对标记中的结束标记。空元素使用相同的方法来说明没有相应的结束标记。然而,仍然可以以“起始标记/结束标记”的形式来表示空元素。比如,可以使用来表示标记,在xml语法中,这也是合法的。2.2.3 实体引用实体是构成xml文件的基本单位,而这就是实体本身以及通常通过实体引用构成的其它实体。实体引用在xml中被用来为数据篇幅与别名。实质上,实体引用还是xml片段的唯一名称。比如,地址簿文件通过实体引用来使用单引号()与和号(&)作为解析字符
22、数据:frank's ratchet service实体引用在和号和分号之间。在该例中,'是作为单引号与和号的别名的实体引用。通常,xml解析可能会根据这些字符在xml中不同的结构作用来解析这些字符。然而,通过实体引用,可以直接使用它们而不需考虑xml解析器的存在及带来的问题。2.2.4 注释在xml文件中,注释用来表示那些技术上不是文件内容的信息。与编程语言中的注释一样,xml注释被用来提供文件数据的说明,这完全是为了用户了解程序。换句话说,xml解析器和应用程序通常会忽略注释。技术上,解析器将注释返回给应用程序是有可能的,这对开发支持注释的xml应用很有好处。注释可以被
23、用在xml文件有解析字符数据出现的任何地方。为解析字符数据(cdata)片断是这一规则的唯一例外。注释可以出现在cdata片段,但他们并不作为注释来处理。注释以结束。对注释的唯一限制就是在注释中不能包含两个连续的连字符。因为这会和xml的注释语法发生冲突。在该例子中,下面的注释被用来描述地址簿中特定的联系人。这个注释中包含的信息不被当作是xml文件数据的一部分。2.2.5 处理指令xml语法不仅仅涉及了字符数据和标记,其中还包含了处理指令。处理指令是一些用来由处理xml文件的应用程序使用的特殊指令。xml解析器并不处理处理指令,相反,它将处理指令返回给应用程序。处理指令通常以小问号和问号()结
24、束。最明显的一个处理指令的例子就是众所周知的xml处理指令,在地址簿的例子中是:这个处理指令指出了这个文件是基于xml版本1.0的。xml处理指令中的version属性使得xml可以持续发展而不会由于存在不同的版本而产生问题。这还使应用程序在试图处理一个不支持版本的文件时,可以提示给用户。2.2.6 cdata段未解析字符数据片段,也就是cdata片段,被用来在xml文件中将那些不需要xml解析器处理的内容分开。具体地说,xml文件的cdata片段包含的是不需要作为xml字符数据解析的内容。通过将cdata片段之间来定义。下面是一个cdata片段的例子:!cdatajack tors1816
25、n streetnew yorknew york在该例子中,元素name和元素address不被当作xml标记,而其中的数据也不能被当作解析的字符数据,因为这些标记被放在cdata片段中。为了使文件中的内容被当作xml标记和解析的字符数据来处理,xml解析器必须能够解析它。由于name标记和address标记被放在了未被解析的cdata片段中,所以它们不会被解析。尽管这个例子说明了如何将一般的xml元素放在cdata片段中,通常使用cdata片段来将一段xml代码引用出来,尤其是在xml帮助以及其他xml文件中。2.3 xml相关技术和标准xml不是一项独立的技术,它包含了很多其他相关技术和标
26、准,例如dtd、xml模式(schema)、名域(namespace)、xlink,、xpath、xpointer、xhtml、xsl、css、dom、sax和soap等。下面对其中几项关键技术进行简要介绍。2.3.1 dtd和模式xml提供两种控制文档内容的机制,一种是dtd(document type definition,文档类型定义),另一种是xml模式(schema)6 eric van der vlist.using w3c xml schema.。dtd定义文档的语法,而文档的语法反过来能够让xml语法分析程序确认某个文档标记使用的合法性。dtd可以定义文档的元素、元素的属性以及
27、元素和属性之间的关系。例如,dtd能够规定何时及如何使用某元素,该元素表示什么以及如何在软件中处理该元素。dtd分为内部和外部两种。内部dtd被包含在xml主文档之中,而外部dtd则是从xml主文档中分离出来的一个单独的文件。图2.2是xml文档的外部dtd7 邵敏,李力鸿,郑震坤等.xml编程实践网络上的世界语.北京:清华大学出版社.2002.12。属性声明实体声明元素声明实体引用图2.2dtd示例(books.dtd)目前,在几乎所有的行业和领域中,dtd都已存在。开发者常常不需要建立他们自己的dtd,但如果未发现适合自己的已存在的dtd,也可以选择使用现有的dtd的一部分并以它为基础进行
28、开发。由于dtd存在结构封闭、不支持名域、没有数据类型和不是xml文档等若干缺陷,w3c后来开发了xml模式(schema)。通过提供对结构和内容的约束,xml模式定义一类xml文档。使用模式指出文档中允许哪些元素、它们可能有哪些属性以及它们可能包含什么。xml模式是一个xml文档,可以使用xml工具创建并编辑它。当实际使用模式并将它应用于一个良构xml文档,就会产生一个扩充文档,该过程称为模式检验。模式处理程序将显示这个文档是否符合该模式,即文档是否有效。模式检验比dtd检验走的更远,因为模式可以比dtd对文档强加更多约束(例如指定元素的文本内容)。因此,xml模式虽然类似于dtd,却比dt
29、d功能更强。2.3.2 名域xml名域(namespace)是一种“限定”一组元素和属性的方法。它是在一个文档中混合来自多个dtd的元素或多组名字并声明哪些元素和属性来自哪组名字的一条途径。使用xml名域的主要原因有三个:混合词汇、混合文档片断以及确定保留名。使用名域说明将一个uri引用与一个或多个xml元素联系在一起,作为一个前缀将它们相互区分开。如果两个元素同名但uri前缀不同,那么它们就是不同的元素,从而避免了名称冲突,扩大了应用范围。 xml sample 210 1-868640-34-2 joe black professor 图2.3名域示例从图2.3中可以看出,“title”虽
30、然出现了两次,但由于使用了“bk”和“authr”两个不同的前缀,从而很容易地被区分开来8 birbeck m.xml高级编程.机械工业出版社.2002.。2.3.3 xlinkxlink(xml linking language,xml链接语言)可以在xml中创建从某个资源到其他资源的超文本链接。使用xlink创建链接时,其实是指定了两个或更多资源,然后连接它们。连接叫做弧,并有一个方向。xlink表示资源之间或资源各部分之间的一种关系,而资源可以是赋予uri的任何东西。xlink的功能十分强大,与html和xhtml相比,它可以多向链接、注解链接、与不止两个端点链接并能够使用外部链接集。下
31、面是一个xml简单链接的例子:this works tooxlink规范引用另外两个重要规范xpath(xml path language,xml路径语言)和xpointer(xml pointer language,xml指针语言)。xpath用于表达从xml文档中一点到另一点的路径,“/recipebook/part3/recipe3”是一个xpath表达式,意思是要跟踪该链接,应从文档顶层开始,找到recipebook元素,然后在该元素内找到第三个part元素,抵达此处后再寻找第三个recipe元素。xpointer是xlink用来结合xpath的机制,xpointer表达式总是写成xp
32、ointer(),括号内是xpath表达式。与xlink一道使用xpath,可以构造一个指向文档内特定点的链接。2.3.4 xsl目前,存在两种显示xml文档的方法,一种是css(cascading style sheet,层叠样式表),另一种就是下面主要讨论的xsl(extensible stylesheet language,可扩展样式表语言)。xsl是一种专门为xml设计的样式语言,它直接架构在xml语法之上,是xml的一种应用。xsl由两个标准组成,一个是xslt(extensible stylesheetlanguage transformations,可扩展样式表语言转换),另一个
33、是xslfo(extensiblestyle language formatting objects,可扩展样式语言格式化对象)。xslt是一种将xml文档转换成各种格式(如xml、html、pdf及sgml等)的新文档的标记语言,人们可以用它按照自己的意愿处理一个xml文档。xslfo则是描述xsl格式化对象的xml词汇,它提供大量的格式化命令,用来说明新文档以何种方式显示给读者。xml文档xsl样式表xml解析器xml解析器xml解析器源树结果树文档存储成像图2.4xsl的工作过程利用xsl,一个xml文档可以根据不同的表示要求有不同的表示形式。图2.4表示了xsl的工作流程,该流程概括起
34、来说就是:xsl处理器读取一个xml文档和一个xsl样式表,输出符合样式表的xml文档的表示形式。整个过程可以分为两个子过程:树转换(tree transformation)和格式化(formatting)。树转换将源树转换成结果树。其中源树指的是转换前的xml文档,结果树指的是处理器产生的新文档,该新文档可能是另一个xml文件、一个html文件甚至一个简单的文本文件。用xslt表示的转换包含一组模板规则。一个模板规则分为两部分:第一部分是模式(pattern),指定模板规则所适用的xml源文档树形结构;第二部分是模板(template),用来在与此模式匹配时,将结果树的一部分进行输出。xsl
35、t用xpath语言来选择源树中要进行处理的节点,指定处理该节点的不同方式的条件,并产生插入到结果树中的文本。格式化将结果树变为可读的形式。而xslfo元素的主要作用就是页面管理、流动管理(内容如何“注入”已创建的一系列页面)和段落/字符管理。xslfo说明了结果树的显示方式,该显示方式是按照格式化对象(formatting object)和格式化属性(formatting property)来描述的。xslfo文档中的各种格式化对象指明内容在页面中的放置顺序,但格式化的细节如页面的大小、元素的尺寸、颜色、字体等必须由格式化属性来说明。格式化属性是以格式化对象的属性形式出现,格式化对象元素可以包
36、含各种属性,w3c总共定义了两百多个属性,多数属性都可以应用于一个以上的格式化对象元素。使转换与格式化相分离的好处是,能够通过选择一个目标xsl处理器理解的名域,来选择按何种方式格式化试图显示的新文档。最后,需要明确的是,xsl不仅仅是应用样式,当使用xsl处理器时,xml源文档中的信息将被评价、重新安排,然后重新组装。所以人们最终得到的是可以容易地添加、修改和重新排序的灵活的源信息。2.4 本章小结本章主要介绍了xml(extensible markup language)可扩展标记性语言的产生背景,较为详细的讲解了xml文档的语法基础和组成部分,简要介绍了它的相关标准。本章从总整体上对将要
37、研究xml解析技术做了基础知识的铺垫,以便后续章节的进一步研究。第三章 xml解析技术基础3.1 解析原理xml解析器是xml应用的基础。xml本身只是以纯文本对数据进行编码的一种格式,要想利用xml,或者说利用xml文件中所编码的数据,必须先将数据从纯文本中解析出来,因此,要求必须有一个能够识别xml文档信息的文本文件阅读器(即xml解析器),用来解析xml文档并提取其中的内容。显然,xml解析器在xml应用程序中有着重要的地位。随着xml越来越广泛地被采用,高效解析xml文档也变得越来越重要,尤其是对于那些要处理大量数据的应用程序,这种技术尤为重要。选择合适的xml解析技术对应用系统的性能
38、有着较大的影响。不正确的解析会导致过度的内存消耗和过长的处理时间,从而大大降低系统的整体性能9 刘芳,肖铁军.xml应用的基石:xml解析技术.计算机工程与设计.2005。xml文档是由称为“实体”的存储单元组成的。它包含可解析或者不可解析的数据。可解析的数据由字符组成,其中有些是字符数据,有些是标记数据。标记数据是对文档存储布局和逻辑结构的描述。xml提供了在存储结构和逻辑布局上加上限制条件的机制。xml解析器(处理器)用来读取xml文档,利用它可以访问文档的结构和内容。假定xml处理器代表应用程序执行了这个工作。根据xml处理器如何读取xml文档中的数据结构以及它需要向应用程序提供的信息,
39、规范描述了xml处理器所必需的行为。读取一个xml数据的过程称为解析。xml解析器根据是否验证合法性,可分为验证性和非验证性解析器;而根据解析方式的不同,又可分为基于树的解析器(dom)和基于事件的解析器(sax)。xml文档domsaxvtd图3.1解析xmlxml解析器3.2 xml解析器工作模式负载均衡器xml解析器应用服务器应用服务器图3.3xml解析器工作模式web服务器下面将对xml解析器的工作模式进行简要的叙述。1) 负载均衡器接收来自internet的入站xml流量。2) 负载均衡器直接将xml流量定向到xml解析器。3) xml解析器解压缩、解析、解释和确认xml流量,然后将
40、它路由给适当的应用服务器。4) xml解析器对应从应用服务器接收到的xml流量进行转换、确认、加密和压缩。5) xml解析器将对xml数据送给负载均衡器,随后这些数据被送上internet。如图3.2所示,xml解析器把原来由应用服务器承担的许多大量耗费cpu时间的任务卸载到网络上,这使得企业获得线速性能的花费大大降低了。与通过扩展应用服务器来获得相同性能相比,利用xml解析器实现相同性能目标的花费仅为前者的1/10。3.3 文档对象模型3.3.1 dom结构首先本节将首先介绍一下什么是对象。对象是一个数据包:属性(变量)和方法(函数)的集合都被归类在内。按照对象层次关系,可以通过对象的属性来
41、访问包含在对象中的数据值。方法就是函数,它用来操作对象。方法一般和一个特定的对象联系。事件是浏览器从用户或环境中得到的某种输入,例如,用户提供的事件“click”。事件需要一些操作来触发,为响应这些操作而编写的代码就是事件句柄。实际上,每一个事件都可以是对象。例如:汽车、自行车等都是对象。可以说“自行车”对象拥有一些属性:make、model、year和color。甚至可以说“自行车”对象拥有一些方法:goto()、stop()和reverse()。使用各种语言可以创建不同的对象,这些对象被称为“用户自定义对象”。但是,经常使用的是“内置”对象,这些内置对象可以使用户对web网页以及web浏览
42、器进行操作和访问。这套预先存在的对象形成了一个完整的模型,即文档对象模型。对于有效的html和格式规范的xml文档,dom(文档对象模型)是一个api(应用编程接口)。它定义了文档的逻辑结构以及访问和操作文档的方式。在dom规范中,“文档”这个术语得到广泛的使用。现在,xml越来越多地用来表示存储在不同系统中的不同种类的信息,而很多这种信息以前都被认为是数据而不是文档。xml把这些数据看作文档,并且利用dom来管理这些数据。dom是一种基于树型的解析技术,将xml文档一次性解析,生成一个位于内存中的对象树用以描述该文档。它可以实现对整个xml文档的全面、动态访问。dom是一种与平台和语言无关的
43、接口,它允许程序和脚本动态访问和修改文档的内容、结构和类型。它定义了以下一系列的对象和方法对dom树的节点进行各种随机操作:(1) document对象:作为树的最高节点,document对象是对整个文档进行操作的入口。(2) element和attr对象:这些节点对象都是文档某一部分的映射,节点的定级层次恰好反映了文档的结构;(3) text对象:作为element和attr对象的子节点,text对象表达了元素或属性的文本内容。text节点不再包含任何子节点。(4) 集合索引:dom提供了几种集合索引方式,可以对节点按指定方式进行遍历。索引参数都是从0开始记数的。dom树中的所有节点都是从n
44、ode对象继承而来的。node对象定义了一些最基本的属性和方法,利用这些方法可以实现对树的遍历,同时,根据属性还可以得知节点的名称、取值并判断其类型。dom提供的api与编程语言无关,所以对一些dom标准中没有明确定义的接口,不同解析器的实现方法也可能有所差别。下图给出了dom如何处理结构化数据的简化试图。dom使用一种属性结构对接口之间的关系进行建模,但并没有将实际的实现局限于某种属性数据结构。换句话说,从外面看dom像是一棵树;但是其数据的具体实现并不局限于某种树型结构。对诸如xml文档这样的结构化数据来说,树形结构是一个显而易见的模型。父元素表示树的根部,每一个子元素代表根的子节点,等等
45、。结构化数据curly friessamuel adamsdom文档图3.3dom文档对象的简化视图3.3.2 dom的优缺点dom以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构做出更改。它还可以在任何时候在树中上下导航,而不是像sax那样是一次性的处理。dom使用起来也要简单得多。利用dom,开发人员可以动态地创建xml,遍历文档、增加/删除/修改文档内容,具有较好的导航能力。因此,基于dom解析的应用程序的编写比较简单。然而,dom解析也存在如下一些问题:1) dom构建整个文档驻留内存的树。在内存中加载整个文档和构建完整树结构成
46、本很高,尤其当文档非常大的时候。典型的dom树的容量比文档容量要大一个数量级,所以它要消耗大量内存。2) 整个xml文档必须一次解析完成,不可能只做部分解析。如果只需关注xml文档的一小部分,那么创建那些永远不被使用的对象是极其浪费的;dom解析器必须在应用程序代码取得控制权之前读取整个文档。对于非常大的文档,这会引起显著的延迟。3.4 基于事件的简单应用编程接口(sax)3.4.1 sax结构在用户接口编程中,经常会遇到“基于事件”这个词。当事件发生的时候,应用程序需要对它们作出响应。例如,对于点击鼠标事件,应用程序中就必须有对它进行响应的程序。基于事件的解析器和这个很相似,但有一点不同,即
47、在解析的过程中,应用程序可能不在程序员的控制之下。这是因为一旦事务设置好了以后,用户就不能调用解析器了,而是解析器在调用。事实上,这要比用户接口编程容易得多。因为这不像鼠标点击事件那样是不可预测的,xml解析事件的发生是一个可预测的序列。由于xml的元素合理地进行了嵌套,因此可以确定每一个元素被打开和关闭的时间以及许多其他问题。简单的来讲,基于事件的api直接向应用程序报告解析事件(例如元素的开始和结束)通常不创建内部的数形结构。应用程序通过实现局部来处理不同的事件,这类似于在一个图形化的接口中处理事件10 马云,钟萍等.xml宝典.电子工业出版社.2002。sax是一个用于处理xml的事件驱
48、动的“推”模型。它不是w3c标准,但它是一个得到了广泛认可的使用java开发的api,大多数sax解析器在实现的时候都遵循标准。sax解析器不像dom那样建立一个整个文档的树型表示,它采用回调机制,在读取文档时激活一系列的事件,这些事件被推给事件处理器。在sax中,其核心接口contenthandler报告基本解析事件及文档事件,包括文档开始事件、元素开始事件等等。处理特定的xml文件时,需要为其创建一个实现了contenthandler的类来处理特定的事件。contenthandler接口其中一些主要的方法有startdocument、enddocument、startelement、end
49、element、characters等。如下图中的例子11 贾素玲,王强,许珂等.xml核心技术.北京:高等教育出版社.2005.4所示。简单的xml文档解析该文档时调用的方法 mitsubishi lancerstartdocument()startelement(vehicles)startelement(car)characters(mitsubishi lancer)endelement(car)endelement(vehicles)enddocument()图3.4sax解析示意图3.4.2 sax的优缺点sax最明显的优点就在于12 朱前飞,高芒.xml解析技术研究.电脑开发与应
50、用.2004年第17卷第11期:1) 它能解析任何大小的文件。因为没有必要把整个文档加载到内存中,所以sax对内存的消耗量比dom小得多,并不会随着文件变大而增加。当然,dom使用的实际内存数量依赖于具体的解析器,但通常100kb的文档会占用1mb的内存。2) sax无需像dom那样为所有节点创建对象,开发人员可以根据需要创建自己的xml对象模型。3) sax本身很简单,而且速度快。这一点也很重要,因为它使sax的使用变得简单。在一个简单的序列中,sax可以得到文档中的信息,它也是最快的方法之一。sax的缺点如下:(1) 不能随机访问文档。因为文档没有被保存在内存中,所以不得不按照数据到达的顺
51、序来处理它们。(2) 当文档包含许多内部交叉引用时,sax的实现是很困难的。因为sax解析器不能交流元信息,如dom的父/子支持,所以必须跟踪解析器处在文档层次的哪个位置,即维护文档中事件的状态。也就是说,为了维护数据结构,在这个结构中保存有用户所需要的环境信息,例如当前元素祖先的属性,复杂的搜索可能会使程序变得很乱。也许sax面临的最大问题是它没有内置如xpath所提供的那样的导航支持。再加上它的单边解析,这就意味着它不支持随机访问。这些限制使sax很少被选择用于操作或修改文档。在具体分析了dom和sax解析方式之后,下面将给出一个具体的图表,可以简明、清晰地看出两种方式各自的优缺点。表3.1两种解析方式的比较 优缺点解析方式优点缺点dom易用性强,遍历简单,支持xpath解析速度太慢,内存占用过高(原文件的5x10x),对于大文件来说几乎不可能使用sax解析速度快,内存占用不与xml大小相联系(可以做到xml涨内存不涨)用性差,因为没有结构信息,无法遍历,不支持xpath,可维护性差3.5 基于虚拟令牌环的xml解析技术3.5.1 vtd-xml概述vtd-xml便是对上述dom结构和sa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年中国针织背心市场调查研究报告
- 2024至2030年铁路车轮传感器项目投资价值分析报告
- 2024至2030年贡丸机项目投资价值分析报告
- 2024至2030年微型磨头项目投资价值分析报告
- 2024年中国摩托车用卤素灯泡市场调查研究报告
- 2024年铝金属复合带项目可行性研究报告
- 2024年贴模治具项目可行性研究报告
- 2024年焊接式锥螺纹端直角接头项目可行性研究报告
- 2024年开孔网绵项目可行性研究报告
- 2024年华美呢项目可行性研究报告
- 特殊级抗菌药物会诊单及申请表
- 新教材人教版高中生物选择性必修第二册 2.1 群落的结构(第2课时) 教学课件
- 幼儿园中班数学活动《图形分类》
- Q-RJ 557-2017 航天型号产品禁(限)用工艺目录(公开)
- 食品安全法培训课件
- 曹龙骐版金融学课后习题答案全解
- 第7课《风的成因》教学设计(教科版小学三年级上册科学第二单元)
- AWS D8.10M-2021 汽车焊接质量规范.钢的激光束焊接
- 建设工程项目临建标准化图集
- 爱护公物_从我做起ppt
- 幼儿园绘本故事:《感谢的味道》 PPT课件
评论
0/150
提交评论