《XML基础及实践开发教程》第十章.ppt

上传人:s****8 文档编号:67242718 上传时间:2022-12-24 格式:PPT 页数:25 大小:136.50KB
返回 下载 相关 举报
《XML基础及实践开发教程》第十章.ppt_第1页
第1页 / 共25页
《XML基础及实践开发教程》第十章.ppt_第2页
第2页 / 共25页
点击查看更多>>
资源描述

《《XML基础及实践开发教程》第十章.ppt》由会员分享,可在线阅读,更多相关《《XML基础及实践开发教程》第十章.ppt(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 XML第十章第十章 SAX基础及实践开发教程基础及实践开发教程本章学习目标本章学习目标了解:SAX的基础知识熟练掌握:SAX的工作机制理解:SAX接口和类熟练掌握:SAX常用接口和类的使用SAX概述概述SAX-Simple API for XML,既是指一种接口,也是指一个软件包。基于事件来解析XML方案的典型代表SAX开始于1997年12月,由一些在互联网上分散的程序员合作进行。后来,参与开发的程序员越来越多,组成了互联网上的XML-DEV社区。1998年5月,SAX1.0由XML-DEV正式发布。目前最新的版本是2.0,但是两者多处不兼容。Java SE中的JAXP提供了对SAX2的支持

2、SAX工作原理工作原理SAX的工作原理简单的说就是对文档进行顺序扫描,当扫描档文档的开始与结束、元素的开始与结束等处都会通知事件处理函数、由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束。SAX的处理机制的处理机制张三19文档开始 元素开始 字符数据(空白)元素开始()字符数据(张三)元素结束()字符数据(空白)元素开始()字符数据(18)元素结束()字符数据(空白)元素结束文档结束SAX的优缺点的优缺点SAX的优点:解析速度快内存消耗少ContentHandler对象可以并行SAX的缺点:必须实现时间处理程序不能随机访问不能修改文档SAX实现产生的事件类型实现产生的事件类型以下为大

3、多数SAX实现都会产生的事件:1.文档的开始和结束时出发文档处理事件2.在文档内每一XML元素接受解析的前后触发元素事件3.任何元数据通常由单独的事件交付4.在处理文档的DTD或Schema时产生DTD或Schema事件5.产生错误事件用来通知主机应用程序解析错误。SAX接口接口JDK的SAX API分布在org.xml.sax包、org.xml.sax.ext包、org.xml.sax.helpers包重要的接口和类:XMLReader:代表了SAX2解析器,它是一个所有的SAX2解析器都必须实现的接口允许应用程序设置和查询解析器的特性和解析属性注册事件处理器启动文档解析ContentHan

4、dler:负责向应用程序反馈与文档相关的基本的解析事件DTDHandlerErrorHandlerContentHandlerContentHandler是Java包中一个特殊的SAX接口,位于org.xml.sax包中。该接口封装了一些对事件处理的方法,当XML解析器开始解析XML输入文档时,它会遇到某些特殊的事件,比如文档的开头和结束、元素的开头和结束、以及元素中的字符数据等事件。当遇到这些事件时,XML解析器会调用ContentHandler接口中相应的方法来响应该事件。ContentHandlerContentHandler接口中的方法:void startDocument()void

5、 endDocument()void startElement(String uri,String localName,String qName,Attributes atts)void endElement(String uri,String localName,String qName)void characters(char ch,int start,int length)DTDHandlerDTDHandler用于接收基本的DTD相关事件的通知。该接口位于org.xml.sax包中。此接口仅包含DTD事件的注释和未解析的实体声明部分。SAX解析器可以按任意顺序报告这些事件,而不管声明注

6、释和未解析实体时所采用的顺序。但是,必须在文档处理程序的startDocument()事件之后,在第一个startElement事件之前报告所有的DTD事件DTDHandlerDTDHandler接口包括以下两个方法:接收注释声明事件的通知public void notationDecl(String name,String publicId,String systemId)throws SAXException 接收未解析的实体声明事件的通知public void unparsedEntityDecl(String name,String publicId,String systemId,S

7、tring notationName)throws SAXException EntityResolverEntityResolver接口用于解析实体的基本接口,该接口位于org.xml.sax包中。该接口只有一个方法:允许应用程序解析外部实体。并返回一个InputSource类的对象或者null,用于读取实体信息。public InputSource resolveEntity(String publicId,String systemId)throws SAXException,IOException ErrorHandlerErrorHandler接口是SAX错误程序的基本接口。如果SA

8、X应用程序需要实现自定义的错误处理,则必须实现此接口,然后解析器将通过此接口报告所有的错误和警告。接口的方法如下:接收可恢复的错误通知void error(SAXParseException exception)接收不可恢复的错误通知void fatalError(SAXParseException exception)接收警告的通知void warning(SAXParseException exception)SAX的其他类和接口的其他类和接口XMLReaderFactoryXMLReaderFactory是一个final类,创建XML解析器的工厂类。该类包含两个静态方法:static X

9、MLReader createXMLReader()根据默认设置创建一个XMLReader的对象static XMLReader createXMLReader(String className)根据指定的解析器类名创建一个XMLReader的对象XMLReaderXMLReader接口是使用回调读取XML文档的接口。XMLReader是XML解析器SAX2驱动程序必须实现的接口。此接口允许应用设置和查询解析器中的功能和属性。注册文档的事件处理程序,以及对文档的解析XMLReader接口的部分方法接口的部分方法方法说明ContentHandler getContentHandler()返回当前

10、的文档内容处理程序DTDHandler getDTDHandler()返回当前的DTD处理程序EntityHandler getErrorHandler()返回当前的实体解析器boolean getFeature(String name)返回当前的错误处理程序Object getProperty(String name)找到name功能标志的值void parse(InputSource input)解析XML文档void parse(InputSource input)从系统标识符systemId解析XML文档void setContentHandler(ContentHandler han

11、dler)允许应用程序注册内容事件处理程序。void setDTDHandler(DTDHandler handler)允许应用程序注册错误事件处理程序。Void setEntityResolver(EntityResolver resolver)允许应用程序注册实体解析器方法说明void setErrorHandler(ErrorHandler handler)允许应用程序注册错误事件处理程序void setProperty(String name,Object value)设置属性name的值为valueAttributes接口接口Attributes接口是一个关于XML元素属性列表的接口

12、。此接口允许用不同方式访问属性列表,如通过属性索引、通过名称空间限定的名称等。该接口位于org.xml.sax包中,它封装了元素属性信息的所有方法:Attributes接口接口int getIndex(String qName)方法:返回通过XML限定(前缀)名查找属性的索引值。int getLength()方法:返回此列表中的属性个数。String getLocalName(int index)方法:返回索引值为index的属性的本地名String getQName(int index)方法:返回索引值为index的属性的XML限定名创建创建XML解析器解析器SAXParserFactory spFactory=SAXParserFactory.newInstance();SAXParser sParser=spFactory.newSAXParser();DefaultHandlerDefaultHandler类是SAX2事件处理程序的默认基类。它继承了EntityResolver、DTDHandler、ContentHandler和ErrorHandler接口案例:案例:解析XML文档张三18李四120本章结束

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁