AndroidPULL解析XML

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

创新互联主要从事成都网站设计、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务陕州,10多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575

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 getPersino(InputStream is)throws Exception{ 
  16. List 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(); 
  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. } 
  32. if(persion != null){ 
  33. if("name".equals(parser.getName())){ 
  34. String name = parser.nextText(); 
  35. persion.setName(name); 
  36. }else if("age".equals(parser.getName())){ 
  37. String age = parser.nextText(); 
  38. persion.setName(age); 
  39. } 
  40. } 
  41. break; 
  42. case XmlPullParser.END_TAG: 
  43. if("person".equals(parser.getName())){ 
  44. list.add(persion); 
  45. persion = null; 
  46. } 
  47. break; 
  48. default: 
  49. break; 
  50. } 
  51. } 
  52. event = parser.next(); 
  53. return list; 
  54. } 
  55. public static void save(List list,OutputStream os) throws IllegalArgumentException, IllegalStateException, IOException{ 
  56. XmlSerializer serializer = Xml.newSerializer(); 
  57. serializer.setOutput(os, "UTF-8"); 
  58. serializer.startDocument("UTF-8", true); 
  59. serializer.startTag(null, "persons"); 
  60. for(Persion persion : list){ 
  61. serializer.startTag(null, "person"); 
  62. serializer.attribute(null, "id", String.valueOf(persion.getId())); 
  63. serializer.startTag(null, "name"); 
  64. serializer.text(persion.getName()); 
  65. serializer.endTag(null, "name"); 
  66. serializer.startTag(null, "age"); 
  67. serializer.text(String.valueOf(persion.getAge())); 
  68. serializer.endTag(null, "age"); 
  69. serializer.endTag(null, "person"); 
  70. } 
  71. serializer.endTag(null, "persons"); 
  72. serializer.endDocument(); 
  73. os.flush(); 
  74. os.close(); 
  75. } 
  76. } 

本文题目:AndroidPULL解析XML
标题网址:http://wkslyf.com/article/copjoii.html