`
yidongkaifa
  • 浏览: 4070647 次
文章分类
社区版块
存档分类
最新评论

Android中采用Pull解析器对XML文件进行解析

 
阅读更多

一、基本介绍
Android中已经集成了xmlpull解析器,所以使用XmlPullParser类非常方便,不需要从外部导入所依赖的Jar包,Pull解析器在解析xml文件的性能上是非常优秀的。

二、例子

读取到xml的声明返回数字0 START_DOCUMENT;
读取到xml的结束返回数字1 END_DOCUMENT ;
读取到xml的开始标签返回数字2 START_TAG
读取到xml的结束标签返回数字3 END_TAG
读取到xml的文本返回数字4 TEXT

.xml文件

  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <people>
  3. <personid="001">
  4. <name>XY1</name>
  5. <age>22</age>
  6. </person>
  7. <personid="002">
  8. <name>XY2</name>
  9. <age>22</age>
  10. </person>
  11. </people>

.解析类

  1. publicclassPersonService
  2. {
  3. publicListgetPeople(InputStreamxml)throwsException
  4. {
  5. Listlst=null;
  6. Personperson=null;
  7. //获得pull解析器工厂
  8. XmlPullParserFactorypullParserFactory=XmlPullParserFactory.newInstance();
  9. //获取XmlPullParser的实例
  10. XmlPullParserpullParser=pullParserFactory.newPullParser();
  11. //设置需要解析的XML数据
  12. pullParser.setInput(xml,"UTF-8");
  13. //取得事件
  14. intevent=pullParser.getEventType();
  15. //若为解析到末尾
  16. while(event!=XmlPullParser.END_DOCUMENT)//文档结束
  17. {
  18. //节点名称
  19. StringnodeName=pullParser.getName();
  20. switch(event)
  21. {
  22. caseXmlPullParser.START_DOCUMENT://文档开始
  23. lst=newArrayList();
  24. break;
  25. caseXmlPullParser.START_TAG://标签开始
  26. if("person".equals(nodeName))
  27. {
  28. Stringid=pullParser.getAttributeValue(0);
  29. person=newPerson();
  30. person.setId(id);
  31. }
  32. if("name".equals(nodeName))
  33. {
  34. Stringname=pullParser.nextText();
  35. person.setName(name);
  36. }
  37. if("age".equals(nodeName))
  38. {
  39. intage=Integer.valueOf(pullParser.nextText());
  40. person.setAge(age);
  41. }
  42. break;
  43. caseXmlPullParser.END_TAG://标签结束
  44. if("person".equals(nodeName))
  45. {
  46. lst.add(person);
  47. person=null;
  48. }
  49. break;
  50. }
  51. event=pullParser.next();//下一个标签
  52. }
  53. returnlst;
  54. }
  55. }


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics