• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
掌握SAX
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
掌握SAX
软件发布 掌握SAX
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 文章首页 >> 编程技术 >> XML教程 >> 掌握SAX

掌握SAX

添加时间: 2006-5-10 4:52:14  作者: XML教程  阅读次数:60   来源: http://d9soft.com

        在用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实现:
当然,最“标准”的Java版本在SAX项目网站。 
Microsoft XML Core Services 4.0 库包括了采用COM的SAX解析器,对VB程序员特别有用(或开发Windows的程序员)。 
支持Perl的binding of SAX 2.0。 
SAX in C++ 是一套用在SAX和C++应用程序中的C++接口和封装类。 
许多编程语言,比如Python和所有的.NET语言都在其核心功能中内建支持SAX。

 

上下文章:

 

上一篇文章: 将SAX加入我们的ASP应用中 下一篇文章: 简析JAVA中的XML编程

相关文章:

  • 掌握Cisco IOS测试命令的多种用法
  • 快速掌握Cool Edit Pro软件
  • 快速掌握Sam2496软件
  • Flash动画制作技巧之如何掌握移动渐变动画
  • Flash制作动画之掌握基本按钮知识

相关软件:

  • 轻松掌握 tcp/ip 网络管理(PDG)
  • 轻松掌握SQL第四版(PDG)
  • 轻松掌握SQL第四版(PDG)

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

编程技术分类导航

  • ASP & ASP.NET教程
  • PHP教程
  • JSP教程
  • C/C++教程
  • VB & VB.NET教程
  • VC教程
  • Delphi教程
  • BCB教程
  • VFP教程
  • PB教程
  • JAVA教程
  • XML教程
  • C#教程
  • CGI教程

本类经典文章推荐

  • XML轻松学习手册(6)XML实例解析...
  • XSL简明教程(1)XSL入门
  • XSL简明教程(2)XSL转换
  • XSL简明教程(3)在客户端的实现
  • XSL简明教程(4)在服务器端的实现
  • XSL简明教程(5)XSL的索引
  • XSL简明教程(5)XSL的索引
  • XSL简明教程(6)XSL过滤和查询
  • XSL简明教程(7)XSL 的控制语句
  • XSL简明教程(7)XSL 的控制语句

XML教程阅读排行

  • XML轻松学习手册(6)XML实例解析...
  • XSL简明教程(1)XSL入门
  • 大话XML(1)XML是什么
  • XML轻松学习手册(2)XML快速入门
  • XML轻松学习手册(1)目录
  • XML轻松学习手册(3)XML概念
  • XML轻松学习手册(5)XML语法
  • XSL简明教程(2)XSL转换
  • 大话XML(2)XML和HTML的比较1
  • XML轻松学习手册(6)XML实例解析

编程技术阅读总排行

  • VB入门教程之一
  • Java连接数据库实例
  • 第二章 PowerBuilder 入门之创建新...
  • VC++之List Box/Check List Box控...
  • 第一章 什么是PowerBuilder
  • VC++ List Ctrl控件
  • VC++ Combo Box/Combo Box Ex控件
  • 学C++不得不看的一篇文章
  • VB入门教程之二
  • VC++之Button控件

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有