首先先大概说一下什么是SAX
SAX是一个用于处理XML事件驱动的“推”模型,虽然它不是W3C标准,但它却是一个得到了广泛认可的API。SAX解析器不像DOM那样建立一个完整的文档树,而是在读取文档时激活一系列事件,这些事件被推给事件处理器,然后由事件处理器提供对文档内容的访问。
使用SAX解析XML文件具有以下特点: 逐行扫描,一边扫描,一边解析,比DOM节省内存空间,操作稍微复杂 Simple API for XML,既是指一种接口,也是指一个软件包 作为接口,SAX是事件驱动型XML解析的一个标准接口 SAX的常用接口为ContentHandler
以下是常用的SAX解析XML文件的步骤,使用ContentHandler的实现类DefaultHandler:
① 首先创建一个类继承DefaultHandler,重写以下方法:
characters(char[] ch, int start, int length)
endDocument()
endElement(String uri, String localName, String qName)
startDocument()
startElement(String uri, String localName, String qName, Attributes attributes)
public class DefaultHandler extends Object implements ContentHandler DTDHandler EntityResolver ErrorHandler
② 在Activity中创建XMLReader,并对输入的inputString字符串进行解析:
//创建一个SAXParserFactory
SAXParserFactory factory = SAXParserFactory.newInstance();
XMLReader reader = factory.newSAXParser().getXMLReader();
//为XMLReader设置内容处理器
reader.setContentHandler(new MyContentHandler());
//开始解析文件
reader.parse(new InputSource(new StringReader(inputString)));
(特别说明:本文部分内容是在观看marschen的Android视频教程时做的笔记,感谢marschen推出的视频教程,这里也推荐给大家:http://www.marschen.com/portal.php)