Android PULL解析XML

移动开发 Android
本文建议Android的开发者采用PULL技术解析XML文档.跟SAX类似,只不过PULL技术返回的事件类型是整型,所以我们只要对返回的事件进行处理就行了.

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

java代码

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: 
30. 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.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
责任编辑:闫佳明 来源: my.eoe.cn
相关推荐

2013-06-08 13:37:28

Android开发XML解析Pull方式

2010-01-25 18:22:33

Android使用XM

2011-03-30 17:32:28

androidmaniAndroid开发

2014-12-31 14:09:23

xml解析

2013-06-08 17:09:35

Android开发移动开发XML解析

2012-05-23 13:17:43

JavaJdomXML

2009-09-09 14:40:15

C# XML解析

2012-08-16 15:56:33

XML

2011-08-04 18:39:32

iOS XML

2022-03-22 09:41:31

Java编程语言持久化

2013-06-08 13:02:11

Android开发XML解析

2010-07-26 15:06:29

Perl解析XML文件

2009-02-17 11:23:08

2010-09-28 10:03:15

DOM文档对象模型

2011-02-22 14:10:25

PHPXML

2010-09-09 13:55:47

XML DOM

2009-09-09 13:57:28

C# XML解析

2013-06-09 12:53:05

Android开发XML读写XML解析

2013-06-09 12:49:15

Android开发XML读写XML解析

2013-06-09 13:07:23

Android开发XML读写XML解析
点赞
收藏

51CTO技术栈公众号