`
igogogo9
  • 浏览: 249887 次
  • 性别: Icon_minigender_1
  • 来自: 海口市
社区版块
存档分类
最新评论

XML基础教程:掌握SAX

阅读更多
在用DOM耗费较长时间解析XML文件以后,你可能注意到在用DOM处理大型文件时其性能下降的非常厉害。这 个问题是由DOM的树结构所造成的:这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存。在采用DOM之后性能受到严重影响的情况 下,你不妨考虑使用Simple API for XML(SAX)。在这篇文章中,我们就为你介绍SAX API,同时提出若干采用不同语言实现的SAX链接。

SAX 最初是由David Megginson采用Java语言开发的,之后SAX很快在Java开发者中流行起来。SAN项目现在负责管理其原始API的开发工作,这是一种公开 的、开放源代码软件。不同于其他大多数XML标准的是,SAX没有语言开发商必须遵守的标准SAX参考版本。因此,SAX的不同实现可能采用区别很大的接 口。不过,所有的这些实现至少有一个特性是完全一样的,这就是事件驱动。

事件驱动的文档解析

在SAX解析器装载XML文件时,它遍历文件文档并在其主机应用程序中产生事件(经由回调函数、指派函数或者任何可调用平台完成这一功能)表示这一过程。这样,编写SAX应用程序就如同采用最现代的工具箱编写GUI程序。

大多数SAX实现都会产生以下若干类型的事件:

  • 在文档的开始和结束时触发文档处理事件。
  • 在文档内每一XML元素接受解析的前后触发元素事件。任何元数据通常都由单独的事件交付。
  • 在处理文档的DTD或Schema时产生DTD或Schema事件。
  • 错误事件用来通知主机应用程序解析错误。

显而易见,在处理文档时你最关心的就是元素事件了。通常,SAX解析器会向你的主机应用程序提供包含 元素信息的事件参数;在最低程度下也会提供元素的名字。具体取决于你的特定实现,可以定义不同类型的元素事件代表不同类型元素的处理。例如,注释元素(它 可能包含主机应用程序的处理指令)就经常在接受处理时产生特殊的事件。

下面我们就举个比较基本的例子。假如你把程序清单A中的XML文件装入了SAX解析器,那么你可能会在你的主机应用程序中收到以下事件通知:
Document Start
Element Start "catalog"
Element Start "book"
Element Start "author"
Data "Adams, Lamont"
Element End "author"
Element Start "title"
Data "Lamont's First Book"
Element End "title"
Element End "book"
Element End "catalog"
Document End

SAX对DOM

在 什么情况下采用这种或者那种API并没有确定的严格规则;具体情况具体分析。所有的SAX处理都在一次遍历中完成的;因此,在解析同等大小的文档时SAX 通常会相比DOM提供更好的性能(因为DOM必须遍历树结构)。此外,与DOM是比,因为在给定的时间之内只需要XML文档的一部分装入内存,所以SAX 通常在处理更大文件时内存的利用效率也来得更高(我已经提到过,DOM在开始解析文档之前必须把全部XML文档装入内存)。

然而,SAX也不是没有缺点。SAX应用程序一般都比较长,程序中充斥着大量的if/else结构用来确定处理特定元素时所采用的运动。同样的,处理多个XML元素之间散布的数据结构也很成问题,因为解析事件之间必须保存中间数据。最后, SAX应用程序的事件处理结构一般意味着SAX应用程序是针对特定文件结构定制构建的,而DOM应用程序则更具一般性。

从哪里获得SAX

相当多的SAX实现都可以从网上获得。不幸的是,它们之间稍有不同,但其大多数都提供了相应的帮助文档。以下是一些流行的SAX实现:

许多编程语言,比如Python和所有的.NET语言都在其核心功能中内建支持SAX。

分享到:
评论

相关推荐

    xml基础教程|源码

    在这个“XML基础教程|源码”中,我们将深入探讨XML的基本概念、语法以及如何通过源码来学习和操作XML。 1. XML基本概念: - **定义**:XML是一种自描述性的标记语言,允许用户自定义标签来描述数据。 - **结构**...

    xml基础教程(ppt)

    通过这个“xml基础教程”PPT,你将能够学习到XML的基础语法、数据组织方式以及如何利用相关技术处理XML文档。实践是检验真理的唯一标准,建议结合提供的源码进行实际操作,以巩固理论知识。同时,持续学习和理解XML...

    Xml基础教程 高怡新 ppt 源码

    在本教程中,"Xml基础教程 高怡新 ppt 源码",我们将深入探讨XML的基本概念、语法以及它在IT领域的应用。 首先,XML的全称“可扩展标记语言”意味着它允许用户自定义标签,这与HTML(超文本标记语言)不同,HTML...

    Xml基础教程 高怡新版 源代码 ppt(传错了 勿下载)

    高怡新版的XML基础教程是针对初学者设计的,旨在帮助读者快速掌握XML的基本概念、语法和应用。 XML的基础部分包括以下几个方面: 1. **XML概述**:XML的设计目标是为了传输和存储数据,而不是为了显示数据。与HTML...

    XML基础教程第2版教学课件

    耿祥义教授编写的《XML基础教程》第二版,旨在深入浅出地介绍XML的基本概念、语法规范及其应用技术。下面将根据提供的压缩包文件名,详细阐述各个章节的知识点。 第一章:XML简介 这一章会介绍XML的起源,作为HTML...

    xml基础教程ppt

    XML(eXtensible Markup Language)是一种用于标记数据的语言,它的设计目的是传输和存储数据,而不是显示数据。...通过学习XML基础教程PPT,你可以掌握XML的语法和使用技巧,为后续的数据处理和集成打下坚实基础。

    XML基础教程(自己整理的)

    通过学习这个XML基础教程,你可以掌握XML的基本概念、结构和使用方法,为更深入的XML应用,如Web服务、数据交换和配置文件等奠定基础。实际操作中的例子能帮助你更好地理解和运用这些知识。记得实践是检验真理的唯一...

    XML基础教程与实验指导.rar

    本教程将深入浅出地讲解XML的基础知识,并提供实验指导,帮助新手快速掌握XML的核心概念。 XML的起源与特点: XML起源于1998年,由W3C(万维网联盟)发布,旨在替代HTML在数据传输中的局限性。XML的主要特点是: 1...

    xml基础教程xml基础教程.rar

    在本教程中,我们将深入探讨XML的基础知识,帮助初学者掌握这一重要的数据描述格式。 XML的结构: 1. **XML文档结构**:XML文档由文档声明、元素、属性、文本内容、注释等组成。文档必须以`<?xml version="1.0" ...

    XML基础教程源码-code

    在提供的"范春梅-XML基础教程源码-code"中,你可以找到关于XML处理的实例代码,可能包括创建、解析、修改XML文档等操作。通过这些源码,你可以更好地理解XML在实际开发中的应用。 总之,XML作为一种数据交换和存储...

    xml基础教程课件习题答案源代码

    这个“XML基础教程课件习题答案源代码”资源是为初学者提供了一个全面学习XML的平台,涵盖了理论知识、实践操作和问题解决。 1. **XML基础知识**:XML的设计目标是为了传输和存储数据,而不是为了显示数据。它通过...

    xml基础教程 tech课

    在本“XML基础教程 tech课”中,我们将深入探讨XML的基本概念、结构以及它在IT领域的广泛应用。 一、XML简介 XML起源于1998年,由万维网联盟(W3C)制定,它是一种可扩展的标记语言,与HTML(HyperText Markup ...

    XML基础教程与实验指导课件ppt(补充)

    XML,全称可扩展标记语言...总之,这个“XML基础教程与实验指导课件ppt(补充)”将引导你逐步走进XML的世界,通过理论学习和实践操作,使你能够熟练运用XML进行数据管理与交换,为今后的IT职业生涯打下坚实的基础。

    XML基础教程与实验指导课件PPT+源代码文件。

    在本教程中,我们将深入探讨XML的基本概念、语法和应用,同时结合实验指导,帮助学习者掌握XML的实际操作技能。 一、XML简介 XML起源于1998年W3C发布的标准,它的主要目标是简化数据共享和交换,特别是在不同的系统...

    XML基础教程电子书(XML学习)

    XML,全称为eXtensible Markup Language,可扩展标记语言,是互联网上数据交换与存储的重要..."XML基础教程"电子书将涵盖这些内容,帮助初学者掌握XML的使用,从而能够有效地在各种项目中利用XML进行数据管理和交换。

    XML基础教程第二版.rar

    XML,全称是eXtensible Markup...总之,“XML基础教程第二版”全面覆盖了XML的基础概念、语法和实际应用,对于理解和掌握XML这一数据交换的重要工具至关重要。通过学习,你将能熟练地运用XML处理数据,提升你的IT技能。

    XML基础教程实例代码

    在本教程中,我们将通过一系列实例代码来深入理解XML的基础知识,这对于初学者来说是一份非常有价值的资源。 1. **XML文档结构** - 每个XML文档都必须有一个根元素,它是所有其他元素的父节点。 - 元素是XML文档...

    XML基础教程

    在本XML基础教程中,我们将深入探讨XML的基本概念、语法、解析方式以及它在IT行业中的广泛应用。 一、XML简介 XML起源于1998年,由万维网联盟(W3C)制定,是HTML的补充,主要用于结构化数据的描述。与HTML注重页面...

    XML基础教程与实验指导课件

    本教程旨在提供XML的基础知识,并通过实验指导帮助学习者深入理解其核心概念和应用。 一、XML概述 XML是W3C(万维网联盟)制定的一种开放标准,其设计目标是简化数据的共享和重用。与HTML不同,HTML主要用于展示...

    xml权威教程(3天全面掌握xml)

    第一天:XML基础 1. XML简介:理解XML的起源、目的和基本结构,包括XML文档的声明、元素、属性、文本内容和注释。 2. XML命名规则:学习XML元素、属性、命名空间等的命名规范,了解它们的合法字符和限制。 3. XML...

Global site tag (gtag.js) - Google Analytics