我爱编程

Android中用SAX解析XML 结合例子说明一下

2016-09-10  本文已影响95人  阿川丶

之前没怎么用过SAX解析,最近项目用到了,就仔细的看了一下,然后写个简书,记录下来,以后还可以复习复习

1.说到SAX解析XML,肯定会想到DOM解析和PULL的解析,我也看了资料来区分他们的三个的,我个人认为他们三个区别在于  

SAX:是根据xml的顺序依次进行解析的,读到某一个节点的时候,回去判断这个节点与xml的语          法中的对应的部分是否符合,是按照这个模式解析的

DOM:是一次性的将xml的所有内容都读取到内存中,然后操作者在遍历解析到内存中xml树,然            后再根据需求提取自己想要的部分,我认为它的优点在于很直观,所有的东西都摆在眼前              需要什么就提取什么,但是一次性的将所有的内容都读取到内存中,站在安卓的角度来                讲,这样的方式是不推荐的(抛开它所在内存的大小)

PULL:是和SAX解析很相似的一种解析,我也是分别找了2个例子做了一下对比,我认为PULL解析            是具有主动权的,主动的进行解析和结束,而SAX解析,不是主动的,只要解析开始,就必          须等到解析结束

2.下面来看一下SAX解析中用到的几个很重要的方法

/**

* 当SAX解析器解析到XML文档开始时,会调用的方法

*/

public void startDocument() throws SAXException {

super.startDocument();

}

/**

* 当SAX解析器解析到XML文档结束时,会调用的方法

*/

@Override

public void endDocument() throws SAXException {

super.endDocument();

}

/**

* 当SAX解析器解析到某个属性值时,会调用的方法

* 其中参数ch记录了这个属性值的内容

*/

@Override

public void characters(char[] ch, int start, int length)

throws SAXException {

super.characters(ch, start, length);

}

/**

* 当SAX解析器解析到某个元素开始时,会调用的方法

* 其中localName记录的是元素属性名

*/

public void startElement(String uri, String localName, String qName,

Attributes attributes) throws SAXException {

super.startElement(uri, localName, qName, attributes);

}

/**

* 当SAX解析器解析到某个元素结束时,会调用的方法

* 其中localName记录的是元素属性名

*/

public void endElement(String uri, String localName, String qName)

throws SAXException {

// TODO Auto-generated method stub

super.endElement(uri, localName, qName);

}

以上的这个几个方法,完全可以满足我们解析一个xml的基本需要

3.大致的思路:根绝xml的内容定义个实体类,用来接收属性,然后再顶一个List,当解析到一个节点的时候如果符合就会将属性值添加到实体类                        中,这样,解析完成的话,所有的属性值就都放到实体类中了,最后在判断一下根节点,如果符合就将这个实体类添加到List中                       最后在你需要展示数据的页面,调用这个类,然后循环遍历去取list中的数据

4.我例子写好了,注释也写了,但是我tm不会传上来,

上一篇下一篇

猜你喜欢

热点阅读