Mars视频笔记——XML解析(SAX)

XML 可扩充标记语言

 

除了SAX(逐行扫描解析 操作稍显复杂 向文档添删内容不便) 

DOM方式(树 缺点:大数据性能不好) (听说还有PULL)

 

1 什么是SAX

Simple API for XML 一种接口 也是一个软件包

作为接口 SAX是事件驱动型XML解析的一个标准接口

 

2 SAX的基本原理

对文档顺序扫描 扫描到文档开始结束,元素开始结束等地方时通知事件处理函数

例如:

文档开始结束时触发文档处理事件

在文档内的每个XML元素接受解析前后触发元素事件

任何元数据通常都由单独的事件交互

在处理文档的DTD或Schema时产生DTD或Schema事件

产生错误事件用来通知主机应用程序解析错误

SAX模型(图)

 

eg:

<doc>

<para>hello,world</para>

</doc>

 

start document

start element:doc

start element:para

characters:hello,world

endelement:para

start element:doc

end document

 

3 SAX常用接口

ContentHandler接口

Java类包中特殊的SAX接口 封装了一些对事件处理的方法 当遇到事件 就会调用响应方法响应

比如:void startDocument() void endElements(String uri,String localName,String qName)等

 

 

4 SAX解析

 

解析文档过程

创建事件处理程序

创建SAX解析器

将事件处理程序分配给解析器

对文档进行解析,将每个事件发送给处理程序

//创建一个SAXParserFactory

SAXParserFactory factory=SAXParserFactory.newInstance();

XMLReader reader=factory.newSAXParser().getXMLReader();

//为XMLReader设置内容处理器

reader.setContentHandler(new MyContentHandler());

这里的MyContentHandler类为继承DefaultHandler(适配器模式 所以不是实现ContentHandler接口)的类

//开始解析文件

reader.parse(new InputSource(new StringReader(resultStr)));//resultStr为要解析的字符串

 

把自己要的解析工作代码写在响应的方法内(MyContentHandler)


你可能感兴趣的:(android,xml,sax)