Android PULL解析XML

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

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

java代码

  1. import java.io.IOException; 
  2. import java.io.InputStream; 
  3. import java.io.OutputStream; 
  4. import java.util.ArrayList; 
  5. import java.util.List; 
  6. import org.xmlpull.v1.XmlPullParser; 
  7. import org.xmlpull.v1.XmlSerializer; 
  8. import android.util.Xml; 
  9. import com.cn.domain.Persion; 
  10. /**** 
  11. * 采用Pull解析XML 
  12. * 
  13. * ****/ 
  14. public class PULLPersionService { 
  15. public static List<Persion> getPersino(InputStream is)throws Exception{ 
  16. List<Persion> list = null
  17. Persion persion = null
  18. XmlPullParser parser = Xml.newPullParser(); 
  19. parser.setInput(is, "UTF-8"); 
  20. int event = parser.getEventType(); 
  21. while(event != XmlPullParser.END_DOCUMENT){ 
  22. switch (event){ 
  23. case XmlPullParser.START_DOCUMENT: 
  24. 30. list = new ArrayList<Persion>(); 
  25. break
  26. case XmlPullParser.START_TAG: 
  27. if("person".equals(parser.getName())){//得到指针所指向的节点名称 
  28. int id = Integer.parseInt(parser.getAttributeValue(0)); 
  29. persion = new Persion(); 
  30. persion.setId(id); 
  31. if(persion != null){ 
  32. if("name".equals(parser.getName())){ 
  33. String name = parser.nextText(); 
  34. persion.setName(name); 
  35. }else if("age".equals(parser.getName())){ 
  36. String age = parser.nextText(); 
  37. persion.setName(age); 
  38. break
  39. case XmlPullParser.END_TAG: 
  40. if("person".equals(parser.getName())){ 
  41. list.add(persion); 
  42. persion = null
  43. break
  44. default
  45. break
  46. event = parser.next(); 
  47. return list; 
  48. public static void save(List<Persion> list,OutputStream os) throws IllegalArgumentException, IllegalStateException, IOException{ 
  49. XmlSerializer serializer = Xml.newSerializer(); 
  50. serializer.setOutput(os, "UTF-8"); 
  51. serializer.startDocument("UTF-8"true); 
  52. serializer.startTag(null"persons"); 
  53. for(Persion persion : list){ 
  54. serializer.startTag(null"person"); 
  55. serializer.attribute(null"id", String.valueOf(persion.getId())); 
  56. serializer.startTag(null"name"); 
  57. serializer.text(persion.getName()); 
  58. serializer.endTag(null"name"); 
  59. serializer.startTag(null"age"); 
  60. serializer.text(String.valueOf(persion.getAge())); 
  61. serializer.endTag(null"age"); 
  62. serializer.endTag(null"person"); 
  63. serializer.endTag(null"persons"); 
  64. serializer.endDocument(); 
  65. os.flush(); 
  66. os.close(); 

责任编辑:闫佳明 来源: 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解析

2011-08-04 18:39:32

iOS XML

2012-08-16 15:56:33

XML

2022-03-22 09:41:31

Java编程语言持久化

2013-06-08 13:02:11

Android开发XML解析

2013-06-09 12:53:05

Android开发XML读写XML解析

2010-07-26 15:06:29

Perl解析XML文件

2009-02-17 11:23:08

2010-09-09 13:55:47

XML DOM

2011-02-22 14:10:25

PHPXML

2010-09-28 10:03:15

DOM文档对象模型

2009-09-09 13:57:28

C# XML解析

2013-06-09 10:25:56

Android开发XML读写XML解析

2013-06-09 10:37:53

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

51CTO技术栈公众号