首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

Android采取PULL解析XML文档

2012-08-24 
Android采用PULL解析XML文档Android系统中采用PULL技术解析XML文档比用SAX技术性能要好得多。建议Android的

Android采用PULL解析XML文档

Android系统中采用PULL技术解析XML文档比用SAX技术性能要好得多。建议Android的开发者采用PULL技术解析XML文档。跟SAX类似,只不过PULL技术返回的事件类型是整型,所以我们只要对返回的事件进行处理就行了。

?

package com.cn.service;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlSerializer;import android.util.Xml;import com.cn.domain.Persion;/**** * 采用Pull解析XML *  * ****/public class PULLPersionService {public static List<Persion> getPersino(InputStream is)throws Exception{List<Persion> list = null;Persion persion = null;XmlPullParser parser = Xml.newPullParser();parser.setInput(is, "UTF-8");int event = parser.getEventType();while(event != XmlPullParser.END_DOCUMENT){switch (event){case XmlPullParser.START_DOCUMENT:list =  new ArrayList<Persion>();break;case XmlPullParser.START_TAG:if("person".equals(parser.getName())){//得到指针所指向的节点名称int id = Integer.parseInt(parser.getAttributeValue(0));persion = new Persion();persion.setId(id);}if(persion != null){if("name".equals(parser.getName())){String name = parser.nextText();persion.setName(name);}else if("age".equals(parser.getName())){String age = parser.nextText();persion.setName(age);}}break;case XmlPullParser.END_TAG:if("person".equals(parser.getName())){list.add(persion);persion = null;}break;default:break;}}event = parser.next();return list;}public static void save(List<Persion> list,OutputStream os) throws IllegalArgumentException, IllegalStateException, IOException{XmlSerializer serializer = Xml.newSerializer();serializer.setOutput(os, "UTF-8");serializer.startDocument("UTF-8", true);serializer.startTag(null, "persons");for(Persion persion : list){serializer.startTag(null, "person");serializer.attribute(null, "id", String.valueOf(persion.getId()));serializer.startTag(null, "name");serializer.text(persion.getName());serializer.endTag(null, "name");serializer.startTag(null, "age");serializer.text(String.valueOf(persion.getAge()));serializer.endTag(null, "age");serializer.endTag(null, "person");}serializer.endTag(null, "persons");serializer.endDocument();os.flush();os.close();}}
?

?

?

1 楼 alen456 2010-12-14   pull解析xml,是android系统自带的,其实他跟SAX解析xml是差不多的,DOM解析xml也行,但是个人强烈反对用DOM解析xml,因为要耗的内存太多啦!个人建议,用SAX和pull都行~~~pull的代码量还少点,也挺容易理解,所以,咱赞同楼主的想法! 2 楼 lishali12345 2010-12-21   之前的项目中使用到的是SAX解析,个人觉得SAX的解析方式理解起来其实挺麻烦的,从楼主的分析来看,Pull确实是更为简单的一种方式,可读性也更强了

热点排行