完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
sax是什么意思,什么是SAX?
作为接口,SAX是事件驱动型XML解析的一个标准接口(standard interface)不会改变,已被OASIS(Organization for the Advancement of Structured Information Standards)所采纳。作为软件包,SAX最早的开发始于1997年12月,由一些在互联网上分散的程序员合作进行。后来,参与开发的程序员越来越多,组成了互联网上的XML-DEV社区。五个月以后,1998年5月,SAX 1.0版由XML-DEV正式发布。目前,最新的版本是SAX 2.0。2.0版本在多处与1.0版本不兼容,包括一些类和方法的名字。
大多数SAX实现都会产生以下类型的事件: 在文档的开始和结束时触发文档处理事件。 在文档内每一XML元素接受解析的前后触发元素事件。 任何元数据通常都由单独的事件交付。 在处理文档的DTD或Schema时产生DTD或Schema事件。 产生错误事件用来通知主机应用程序解析错误。
ContentHandler接口 ContentHandler是Java类包中一个特殊的SAX接口,位于org.xml.sax包中。该接口封装了一些对事件处理的方法,当XML解析器开始解析XML输入文档时,它会遇到某些特殊的事件,比如文档的开头和结束、元素开头和结束、以及元素中的字符数据等事件。当遇到这些事件时,XML解析器会调用ContentHandler接口中相应的方法来响应该事件。 ContentHandler接口的方法有以下几种: void startDocument() void 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)
DTDHandler用于接收基本的DTD相关事件的通知。该接口位于org.xml.sax包中。此接口仅包括DTD事件的注释和未解析的实体声明部分。SAX解析器可按任何顺序报告这些事件,而不管声明注释和未解析实体时所采用的顺序;但是,必须在文档处理程序的startDocument()事件之后,在第一个startElement()事件之前报告所有的DTD事件。 DTDHandler接口包括以下两个方法 void startDocumevoid notationDecl(String name, String publicId, String systemId) nt() void unparsedEntityDecl(String name, String publicId, String systemId, String notationName)
EntityResolver接口是用于解析实体的基本接口,该接口位于org.xml.sax包中。 该接口只有一个方法,如下: public InputSource resolveEntity(String publicId, String systemId) 解析器将在打开任何外部实体前调用此方法。此类实体包括在DTD内引用的外部DTD子集和外部参数实体和在文档元素内引用的外部通用实体等。如果SAX应用程序需要实现自定义处理外部实体,则必须实现此接口。
ErrorHandler接口是SAX错误处理程序的基本接口。如果SAX应用程序需要实现自定义的错误处理,则它必须实现此接口,然后解析器将通过此接口报告所有的错误和警告。 该接口的方法如下: void error(SAXParseException exception) void fatalError(SAXParseException exception) void warning(SAXParseException exception)
(1)用系统默认值来创建一个XMLReader(解析器): XMLReader reader = XMLReaderFactory.createXMLReader(); (2)从给定的类名称来创建一个XMLReader : XMLReader reader = XMLReaderFactory.createXMLReader( "org.apache.xerces.parsers.SAXParser"); (3)使用javax.xml.parsers包中的SAXParserFactory类和SAXParser类创建: SAXParserFactory spFactory = SAXParserFactory.newInstance(); SAXParser sParser = spFactory.newSAXParser();
DefaultHandler类是SAX2事件处理程序的默认基类。它继承了EntityResolver、DTDHandler、ContentHandler和ErrorHandler这四个接口。包含这四个接口的所有方法,所以我们在编写事件处理程序时,可以不用直接实现这四个接口,而继承该类,然后重写我们需要的方法。如下: import org.xml.sax.*; import org.xml.sax.helpers.DefaultHandler; public class TestDefaultHandler extends DefaultHandler{ public void startDocument() throws SAXException{ System.out.println("开始解析!"); } public void endDocument() throws SAXException{ System.out.println("解析完成!"); } public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException { System.out.println("元素名:"+qName); } public void endElement(String uri, String localName, String qName) throws SAXException{ System.out.println("对"+qName+"的解析完成!"); } } XMLReader接口 SAX的另外一个含义: [此贴子已经被作者于2008-10-7 13:40:05编辑过]
|
|
相关推荐 |
|
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-4-21 23:26 , Processed in 0.390509 second(s), Total 35, Slave 27 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191