- 1、本文档共31页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
XML NO9课件
第9章 SAX;章节结构;9.1 SAX简介;什么是SAX
读取和操纵 XML 文件的标准方法是 DOM(“文档对象模型”)。遗憾的是,这种方法需要读取整个文件并将它存储到树结构中,因而效率不高、缓慢,并且会过度使用资源。
一种替代方法是使用 Simple API for XML (SAX)。SAX 允许正在读取 文档时处理该文档,这避免了在采取操作之前需要等待存储文档的所有内容。
SAX 是由 XML-DEV 邮件列表的成员开发的,Java 版本由 David Megginson 维护。他们的目的是提供一种更自然的方法来使用 XML, 这种方法不会涉及到使用 DOM 的那种开销。
;
结果是基于事件的 API。解析器将事件(譬如,元素的开始或结束)发送给 处理信息的事件处理程序。然后,应用程序自己可以处理数据。虽然原始文 档保持不变,但 SAX 提供了操纵数据的方法,然后会将该方法导向另一个过 程或文档。
对于 SAX,没有官方的标准;万维网(W3C)或其它官方组织不维护 SAX, 但在 XML 社区中,它是一个事实上的标准。
;SAX(Simple API for XML)简易应用程序编写接口。
它是一种社区性质的讨论产物。几乎所有的XML解析器都会支持它。与DOM比较而言,SAX是一种轻量型的方法。;使用SAX
MSXML组件同时封装了多种与XML有关的解译程序接口和相关规格
DOM的level 1和level 1
SAX 1和SAX 2
与MSXML有关的工具MSXML SDK,用户可以查询MSXML组件内封装的XML规格与类别信息;虚拟的SAX
SAX提供简单的应用程序接口。
一套虚拟的接口,其中并未包含任何的程序实例,虚拟接口中的函数须由用户来实作
;SAX的运行方式
事件驱动
SAX属于事件驱动模式
SAX加载XML 文件后,须等到调用特定函数时才开始进行解译;
在调用解译启动函数之前,将事件处理函数注册到SAX对象中
解译时遇到用户要接收的事件,SAX就发出信息通知用户
如图9-6(p179);SAX是如何工作的;SAX Event Timeline;单向运行
SAX解译XML文件时,每次只创建一部分,不会在内存中创建一个与XML文件相同的树状结构
;SAX的优点
节省内存资源
DOM需要将XML文件完全加载到内存;SAX是单向运行解译程序,在内存中保存一小部分的数据,内存弹性大
若XML文件内的数据量少且数据变动性大,采用DOM,用双向方式对所有节点进行操作;若数据量大,且数据变动性较少,采用SAX的单向方式
提高对特定项目的控制权
变动性大的数据,采用DOM
与网络有关,交换数据少,采用SAX,效率高,灵活性强,对特定项目的控制权可达到最大
可中断的解译过程
SAX单向运行,每次加载一部分数据到内存,若解译遇到问题马上取消解译操作或停止解译
;选择 DOM 还是 SAX,这取决于几个因素:
应用程序的目的:如果必须对数据进行更改,并且作为 XML 将它输出,则在大多数情况下,使用 DOM。与使用 XSL 转换来完成的简单结构更改不一样,如果是对数据本身进行更改,则尤其应该使用 DOM。
数据的数量:对于大文件,SAX 是更好的选择。
将如何使用数据:如果实际上只使用一小部分数据,则使用 SAX 将数据抽 取到应用程序中,这种方法更好些。另一方面,如果知道将需要向后引用已经 处理过的信息,则 SAX 可能不是正确的选择。
需要速度:通常,SAX 实现比 DOM 实现快。
记住 SAX 和 DOM 不是互斥的,这一点很重要。可以使用 DOM 来创建事件的 SAX 流,可以使用 SAX 来创建 DOM 树。事实上,大多数解析器实际常常使用 SAX 来创建 DOM 树!
;9.2 SAX的界面介绍;xml.org.sax提供的事件是SAX1中的核心事件,共17种,较重要的事件有:ContentHandler、DTDHandler、EntityResolver、errorHandler
参见表9-1(p182)
xml.org.sax.ext包中主要规范SAX2的接口
xml.org.sax.helper包提供helper类
Helper类是一种辅助性的角色,主要作为SAX解译器与程序间的中介者
通过Helper类让创建SAX对象的操作封装在Helper类中,所有对文件的存取都是通过Helper类运行;9.3 实作SAX程序;ContentHandler;创建ErrorHandler
当然总会有可能在试图进行解析时,数据有问题。在这样的情况下,有一个处理程序来处理错误和内容将是有帮助的。
就如同创建内容处理程序一样,可以创建出错处理程序。
需要关注的事件有三个:警告、错误和致命错误。
见表9-3(p198)
您可能关注的文档
- Single Agent Search课件.ppt
- SPSS之三课件.ppt
- 2015中考历史冲刺二轮复习专题四 中华民族伟大复兴 中国课件.ppt
- 2015南京一模试卷讲评课件.ppt
- spss描述性统计课件.ppt
- 2015均衡发展讲稿(2015.3.30)fa课件.ppt
- 2015中考英语科学备考讲座课件.ppt
- 2015FLL机器人工程挑战赛辽宁省培训课件.ppt
- 2015安徽语文高考要求背诵篇目课件.ppt
- sql introduction课件.ppt
- 2025届衡阳市第八中学高三一诊考试物理试卷含解析.doc
- 2025届湖南省娄底市双峰一中等五校重点中学高三第二次诊断性检测物理试卷含解析.doc
- 天水市第一中学2025届高三第二次联考物理试卷含解析.doc
- 2025届金华市重点中学高三考前热身物理试卷含解析.doc
- 2025届北京市石景山区第九中学高三第四次模拟考试物理试卷含解析.doc
- 江苏扬州市2025届高三第一次模拟考试物理试卷含解析.doc
- 2025届江苏省南通市高级中学高考物理五模试卷含解析.doc
- 广东省清远市华侨中学2025届高三第一次调研测试物理试卷含解析.doc
- 辽宁省凤城市2025届高三第五次模拟考试物理试卷含解析.doc
- 内蒙古巴彦淖尔市重点中学2025届高考仿真卷物理试卷含解析.doc
文档评论(0)