SAX处理XML

 

1.SAX(Simple Access for XML)API:基于事件驱动的XML处理模型,是一种推模式解析(push-parsing) XML文档的API

解析程序按读入xml文档事件的顺序解析数据,同时基于所选择的结构调用回调处理函数。

2.SAX处理模型的工作步骤:

(1).实现一个扩展DefaultHandler的类,并为每种类型的结构定义回调方法。

(2).初始化一个新的SAX Parser类,Parser读取XML源文件,并触发DefaultHandler类中所定义的回调方法。

(3).顺序读取XML源文件。

3.SAX处理XML文件过程详解:

(1).创建实现DefaultHandlerXML处理器:

//当分析器到达XML文档末端时调用 public void endDocument(){ …… } //对包含元素的字符数据调用 public void characters(char bur[], int offset, int len){ …… } //每次遇到一个新的开始标记或者元素时调用 public void startElement(String nameSpaceURI, String localName, String realName, Attributes attrs){ …… } //当元素结束时调用 public void endElement(String nameSpaceURI, String localName, String rawName){ …… } } 

(2).获取SAX FactoryParser

a.创建已实现的Handler类实例:

DefaultHandler handler = new MyImplHandler(); 

b.获取SAXFactory实例:

SAXParserFactory factory = SAXParserFactory.newInstance(); 

c.通过SAXFactory创建SAX Parser

SAXParser parser = factory.newSAXParser(); 

d.分析XML文件:

parser.parser(XML文件url, handler); 

4.SAX处理XML的优点:

SAX最大的优点是不把任何的XML文档一次性装入内存中,而是依次逐步读入,因此相比DOM的解析方式更加快速和轻便。

具体如下:

(1).没有将整个文档读入内存,内存耗费较低,尤其对于大型的文件这是一个非常巨大的优点。

(2). 使用“ 推模式 ”(由文档读入事件来取代处理程序),允许注册多种内容处理器。

5.SAX处理XML的局限和适应场景:

(1).没有内建的文档导航支持

(2).不能随机访问 XML 文档

(3).不支持命名空间

SAX处理XML方式适用于: XML 只有读操作的程序(不要用来操作和修改XML 文档)。

 

 

你可能感兴趣的:(xml,api,String,文档,Access,attributes)