第10讲-简单XML应用程序编程接口(SAX)(SN3005XML10)课件.ppt

上传人(卖家):晟晟文业 文档编号:4382904 上传时间:2022-12-04 格式:PPT 页数:29 大小:581.50KB
下载 相关 举报
第10讲-简单XML应用程序编程接口(SAX)(SN3005XML10)课件.ppt_第1页
第1页 / 共29页
第10讲-简单XML应用程序编程接口(SAX)(SN3005XML10)课件.ppt_第2页
第2页 / 共29页
第10讲-简单XML应用程序编程接口(SAX)(SN3005XML10)课件.ppt_第3页
第3页 / 共29页
第10讲-简单XML应用程序编程接口(SAX)(SN3005XML10)课件.ppt_第4页
第4页 / 共29页
第10讲-简单XML应用程序编程接口(SAX)(SN3005XML10)课件.ppt_第5页
第5页 / 共29页
点击查看更多>>
资源描述

1、第四卷:第四卷:XML解析器简单XML应用程序编程接口(SAX)2回顾q DOM是一组独立于语言和平台的应用程序编程接口,描述如何访问和操纵存储在结构化XML文档中的信息q DOM可以表示树状结构q 了解W3C为DOM提供一系列API,以供应用程序调用q 掌握DOM API的核心接口q 对结点的操作包括读取、添加、删除、替换和创建,掌握用java实现这些操作的方法3目标q 描述SAX的基本内容q 描述SAX的事件驱动模型q 解释SAX解析器是如何工作的q 列出SAX接口并描述相关的方法q 与DOM之间的比较4基本知识qSAX解析器的特征 SAX(Simple API for XML)是一种采用

2、流式Streaming机制读取并分析XML文档的工具。将其解析所得的元素与属性、文本内容、注释等信息作为“事件”顺序地抛出,交由处理程序来处理。q特征1.基于事件处理,这与DOM将整个文档加载到内存后再处理有很大区别;2.在处理大型文档时,SAX将其化整为零,一般就只有一个元素或文本结点保存在内存中,让事件处理程序处理。处理完毕后,释放该元素或结点占用的内存。3.随时中断处理;4.只读只进的SAX与随机存取的DOM5SAX接口UML类图XMLReader(读取文档)getContentHandler()setCOntentHandler()getEntityResolver()setEntit

3、yResolver()getDTDHandler()setDTDHandler()getErrorHandler()setErrorHandler()Parse()ContentHandler(处理内容)startDocument()endDocument()startPrefixMapping()endPrefixMapping()startElement()endElement()characters()processingInstruction()Attributes(属性)getValue()getURI()getLocalName()getRawName()getType()getL

4、ength()DeclHandler(处理声明)elementDecl()attributeDecl()internalEntityDecl()externalEntityDecl()EntityResolver(解析实体)resolveEntity()DTDHandler(处理DTD)notationDecl()unparsedEntityDecl()ErrorHandler(处理文档错误)warning()error()fatalError()6SAX接口q 整个SAX以XML Reader接口为中心,读取器在执行parse方法时分析文档,自动调用其依赖的ContentHandler、De

5、clHandler、LexicalHandler、EntityResolve和ErrorHandler接口就是SAX的事件处理器。q 使用SAX处理文档的要点一般如下:创建XMLReader实例,通常使用XMLReaderFactory类的createXMLReader方法生成XMLReader接口实例。实现SAX的事件处理器:在程序中定义新的类,该类实现处理内容所需的接口。绑定处理器:创建事件处理器的实例,用XMLReader实例的setContentHandler等方法将其绑定到XMLReader中 分析文档:调用XMLReader中的parse方法,开始分析文档 实现事件处理器的具体功能

6、 终止处理:程序抛出SAXException(无论是否读完XML文档)7使用Java创建SAXq示例编写SAX程序将上述的XML文档解析8代码自定义类继承DefaultHandler,该类实现ContentHandler接口通过工厂生成XMLReader,用setContentHandler方法绑定事件处理器类saxtest,利用parse方法解析文档startDocument方法在开始分析文档时,自动调用endDocument()方法在文档末尾时,自动调用startElement()方法在读取元素开始标记时调用endElement()方法在读取元素结束标记时调用9代码遇到文本内容时调用该方法

7、10运行结果解析结果11运行过程在文档开头,解析器调用ContentHandler中的startDocument方法遇到元素开始标记时,调用ContentHandler中的startElement方法,读取其文本内容调用ContentHandler中的characters方法处理内容,然后遇到元素的结束标记调用ContentHandler中的endElement方法。到达文档结尾,调用ContentHandler中的endDocument方法解析器从parse方法返回到调用程序,调用程序的其它代码,程序结束。12应用q如果要解析XML文档中的DOCTYPE,实现以下接口DeclHandler接

8、口实现接口DeclHandler处理DOCTYPE绑定事件处理器处理DOCTYPE13DeclHandler接口代码在遇到DTD中声明的属性列表ATTLIST时,对其中定义的各个属性一一调用此方法在遇到DTD中声明的元素ELEMENT时,调用此方法实现DeclHandler接口中的所有方法14运行结果结果teams.dtd15应用q如果要解析XML文档的版本声明获取XML版本16运行结果17SAX接口参考qXMLReader接口注册相应处理器18解析器属性Propertyq 解析器的属性名称以URL的形式定义,以http:/xml.org/sax/properties/开头,后面跟上一个标识符

9、,其属性值是Object类型实现DeclHandler接口19ContentHandler接口q 内容处理器用于处理XML文档中最重要的元素和文本内容,使用XMLReader接口的setContentHandler方法将其注册到解析器中20Attributes接口q属性列表被作为参数传入到ContentHandler接口的startElement回调函数。21代码分析-1参数类型22DeclHandler接口q声明处理器用于处理DTD中声明的元素和属性。使用XMLReader接口的”setProperty”注册声明处理器23代码分析-224DefaultHandler类q默认处理器 该类实现了

10、上述ContentHandler、EntityResolver、DTDHandler和ErrorHandler这四个处理器接口。通常,使用该类的继承,导入包 import org.xml.sax.helpers25DefaultHandler类26DOM与SAX的比较qSAX是基于事件处理回调qSAX的执行速度快,不占用过多的内存q对于SAX,实现DefaultHandler接口中的方法,在解析过程中会有大量回调方法的使用,DOM不存在回调q对于小文档DOM适用,大文档SAX适用qSAX适于只读XML,而DOM可以涉及更新XML27总结q描述SAX的基本内容q描述SAX的事件驱动模型q解释SAX解析器是如何工作的q列出SAX接口并描述相关的方法q与DOM之间的比较28课堂测验试编写一段SAX程序,遍历上述的XML文档Test.xml态度决定命运,专注成就人生!态度决定命运,专注成就人生!Thanks!

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(第10讲-简单XML应用程序编程接口(SAX)(SN3005XML10)课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|