- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第七章 SAX解析XML文档 学 习 目 标 掌握SAX的概念和特点 理解SAX的工作机制 了解SAX的常用接口 熟练掌握SAX解析XML文档的步骤 熟练掌握解析器和事件处理器的创建和使用 掌握SAX和DOM共同构建XML文档 基于DOM的解析器的核心是在内存中建立和XML 文档相对应的树状结构。XML文件的标记、标记中 的文本数据和实体等都是内存中的树状结构的某个节 点相对应。 优点:可以方便地操作内存中的树状节点 缺点:如果XML文件较大,或者只需要解析XML文档的一部分数据,就会占用大量的内存空间 SAX简介 SAX没有官方的标准机构,它不属于任何标准组织或团体,也不属于任何公司或个人,而是供任何人使用的一种计算机技术。 SAX是XML事实上的标准,所有的XML解析器都支持它,已经被Java,C#等语言编写实现 SAX是一种基于事件的API SAX概述 SAX是Simple API for XML,简易应用程序编 写接口。解析的核心是事件处理机制,具有占用 内存少,效率高等特点。 SAX是一种高效的解析器,在对那些要处理 大量数据的应用程序,这种特性尤为重要。它允 许在读取文档时处理它,而不必等到整个文档都 被存储之后才采用该操作。 SAX的工作机制【重点掌握】 SAX在概念上与DOM完全不同。它采用事件 机制的方式来解析XML文档。使用SAX解析器对 XML文档进行解析时,会触发一系列事件,这些 事件将被相应的事件监听器监听,从而触发相应 的事件处理方法,应用程序通过这些事件处理方 法实现对XML文档的访问。 大多数的SAX都会实现以下几种类型的事件 在文档的开始和结束时触发文档处理事件 在文档内每一个XML元素都在接受解析的前后触发元素事件。任何元数据通常都是由单独的事件交付。这是我们最关心的事件。通常,SAX解析器会向应用程序提供包含元素信息的事件参数,在最低程度上也会提供元素的名字。 在处理文档的DTD或Schema时产生DTD或Schema事件 错误事件用来通知主机应用程序解析错误 SAX解析器在解析开始的时候就开始发送事 件,当解析器开始处理文档开始,元素开始和文 本时,负责在文档中触发一个事件,而程序员则 实现这些事件监听器,这些监听器负责处理这些 事件——事件中包含了XML元素的内容。 SAX监听器【重点掌握】 SAX解析事件一共有4种,因此需要分别设置4 种监听器。 ContentHandler:监听XML文档内容处理事件的监听器 DTDHander:监听DTD处理事件的监听器 EntityResolver:监听实体处理事件的监听器 ErrorHandler:监听解析错误的监听器 在ContentHandler接口中定义了如下方法: void characters(char[] ch,int start,int length):SAX解析器处理字符数据时触发该方法 void endDocument(): SAX解析器处理文档结束时触发该方法 void endElement(String uri,String localName,String qName): SAX解析器处理元素结束时触发该方法 void endPrefixMapping(String prefix):SAX解析器处理元素里命名空间属性(即xmlns:prefix属性)结束时触发该方法 SAX解析器【重点掌握】 JAXP为SAX解析器提供了如下2组API: XMLReader 和XMLReaderFactory XMLReaderFactory工厂类createXMLReader()静态方法用于创建XMLReader。这两个类位于org.xml.sax包下。 SAXParser 和SAXParserFactory SAXParserFactory工厂类的newSAXParser()实例方法用于创建SAXParser。这两个类位于javax.xml.parsers包下。 XMLReader定义了以下两种用于解析XML文档 的方法: void parse(InputSource input):解析InputSource输入源中的XML文档 void parse(String systemId):解析系统URI所代表的XML文档 SAXParser定义了以下几种用于解析XML文档的方法: void parse(File f,DefaultHandler dh):使用指定的dh作为监听器监听SAX解析事件,解析f文件所代表的XML文档 void parse(InputSource is,DefaultHandler dh):使用指定的dh作为监听器监听SAX解析
原创力文档


文档评论(0)