利用PULL解析方式解析XML文件

前端之家收集整理的这篇文章主要介绍了利用PULL解析方式解析XML文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

需求:现在有一个XML文件,要求用PULL方式解析

文件名:students.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <root>
  3. <student id="1" group="1">
  4. <name>张三</name>
  5. <sex></sex>
  6. <age>18</age>
  7. <email>zhangsan@163.com</email>
  8. <birthday>1987-06-08</birthday>
  9. <memo>好学生</memo>
  10. </student>
  11. <student id="2" group="2">
  12. <name>李四</name>
  13. <sex></sex>
  14. <age>18</age>
  15. <email>lisi@163.com</email>
  16. <birthday>1987-06-08</birthday>
  17. <memo>好学生</memo>
  18. </student>
  19. <student id="3" group="3">
  20. <name>小王</name>
  21. <sex></sex>
  22. <age>18</age>
  23. <email>xiaowang@163.com</email>
  24. <birthday>1987-06-08</birthday>
  25. <memo>好学生</memo>
  26. </student>
  27. <student id="4" group="4">
  28. <name>小张</name>
  29. <sex></sex>
  30. <age>18</age>
  31. <email>xiaozhang@163.com</email>
  32. <birthday>1987-06-08</birthday>
  33. <memo>好学生</memo>
  34. </student>
  35. <student id="5" group="5">
  36. <name>小明</name>
  37. <sex></sex>
  38. <age>18</age>
  39. <email>xiaoming@163.com</email>
  40. <birthday>1987-06-08</birthday>
  41. <memo>好学生</memo>
  42. </student>
  43. </root>


Xml对应的实体Student文件:

  1. package com.parsexml.entity;
  2.  
  3. public class Student {
  4. private int id;
  5. private int group;
  6. private String name;
  7. private String sex;
  8. private int age;
  9. private String email;
  10. private String memo;
  11. private String birthday;
  12. public int getId() {
  13. return id;
  14. }
  15. public void setId(int id) {
  16. this.id = id;
  17. }
  18. public int getGroup() {
  19. return group;
  20. }
  21. public void setGroup(int group) {
  22. this.group = group;
  23. }
  24. public String getName() {
  25. return name;
  26. }
  27. public void setName(String name) {
  28. this.name = name;
  29. }
  30. public String getSex() {
  31. return sex;
  32. }
  33. public void setSex(String sex) {
  34. this.sex = sex;
  35. }
  36. public int getAge() {
  37. return age;
  38. }
  39. public void setAge(int age) {
  40. this.age = age;
  41. }
  42. public String getEmail() {
  43. return email;
  44. }
  45. public void setEmail(String email) {
  46. this.email = email;
  47. }
  48. public String getMemo() {
  49. return memo;
  50. }
  51. public void setMemo(String memo) {
  52. this.memo = memo;
  53. }
  54. public String getBirthday() {
  55. return birthday;
  56. }
  57. public void setBirthday(String birthday) {
  58. this.birthday = birthday;
  59. }
  60. }


3解析代码

  1. package com.parsexml;
  2.  
  3. import java.io.IOException;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6.  
  7. import org.xmlpull.v1.XmlPullParser;
  8. import org.xmlpull.v1.XmlPullParserException;
  9. import org.xmlpull.v1.XmlPullParserFactory;
  10.  
  11. import com.parsexml.entity.Student;
  12.  
  13. public class PullParseXml {
  14. public List<Student> PullParseXML(){
  15. List<Student> list=null;
  16. Student student = null;
  17. //构建XmlPullParserFactory
  18. try {
  19. XmlPullParserFactory pullParserFactory=XmlPullParserFactory.newInstance();
  20. //获取XmlPullParser的实例
  21. XmlPullParser xmlPullParser=pullParserFactory.newPullParser();
  22. //设置输入流 xml文件
  23. xmlPullParser.setInput(Thread.currentThread().getContextClassLoader().getResourceAsStream("students.xml"),"UTF-8");
  24. //开始
  25. int eventType=xmlPullParser.getEventType();
  26. try {
  27. while(eventType!=XmlPullParser.END_DOCUMENT){
  28. String nodeName=xmlPullParser.getName();
  29. switch (eventType) {
  30. //文档开始
  31. case XmlPullParser.START_DOCUMENT:
  32. list=new ArrayList<Student>();
  33. break;
  34. //开始节点
  35. case XmlPullParser.START_TAG:
  36. //判断如果其实节点为student
  37. if("student".equals(nodeName)){
  38. //实例化student对象
  39. student=new Student();
  40. //设置Id属性
  41. student.setId(Integer.parseInt(xmlPullParser.getAttributeValue(0)));
  42. //设置Group属性
  43. student.setGroup(Integer.parseInt(xmlPullParser.getAttributeValue(1)));
  44. }else if("name".equals(nodeName)){
  45. //设置name
  46. student.setName(xmlPullParser.nextText());
  47. }else if("sex".equals(nodeName)){
  48. //设置sex
  49. student.setSex(xmlPullParser.nextText());
  50. }else if("age".equals(nodeName)){
  51. //设置age
  52. student.setAge(Integer.parseInt(xmlPullParser.nextText()));
  53. }else if("email".equals(nodeName)){
  54. //设置email
  55. student.setEmail(xmlPullParser.nextText());
  56. }else if("birthday".equals(nodeName)){
  57. //设置birthday
  58. student.setBirthday(xmlPullParser.nextText());
  59. }else if("memo".equals(nodeName)){
  60. //设置memo属性
  61. student.setMemo(xmlPullParser.nextText());
  62. }
  63. break;
  64. //结束节点
  65. case XmlPullParser.END_TAG:
  66. if("student".equals(nodeName)){
  67. list.add(student);
  68. student=null;
  69. }
  70. break;
  71. default:
  72. break;
  73. }
  74. eventType=xmlPullParser.next();
  75. }
  76. } catch (NumberFormatException e) {
  77. e.printStackTrace();
  78. } catch (IOException e) {
  79. e.printStackTrace();
  80. }
  81. } catch (XmlPullParserException e) {
  82. e.printStackTrace();
  83. }
  84.  
  85. return list;
  86. }
  87. public static void main(String[] args) {
  88. List<Student> list=new PullParseXml().PullParseXML();
  89. for(Student student:list){
  90. System.out.println("id:"+student.getId()+"\tgroup:"+student.getGroup()+"\tname:"+student.getName()+"\tsex:"+student.getSex()+"\tage:"+student.getAge()+"\temail:"+student.getEmail()+"\tbirthday:"+student.getBirthday()+"\tmemo:"+student.getMemo());
  91. }
  92. }
  93. }

猜你在找的XML相关文章