• Android 学习心得(1)——pull解析器


      Android内核使用pull解析器  所以不用导入jar包,pull解析器简单、易用、接近于手工编写XML文件

      解析的XML文件为xmlpull.xml

      

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <students>
     3     <student id="1">
     4         <name>张MM</name>
     5         <gender></gender>
     6         <age>18</age>
     7     </student>
     8     <student id="2">
     9         <name>王GG</name>
    10         <gender></gender>
    11         <age>20</age>
    12     </student>
    13 </students>

      实体类student.java

     1 public class student {
     2     private Integer id;
     3     private String name;
     4     private String gender;
     5     private Integer age;
     6     public Integer getId() {
     7         return id;
     8     }
     9     public void setId(Integer id) {
    10         this.id = id;
    11     }
    12     public String getName() {
    13         return name;
    14     }
    15     public void setName(String name) {
    16         this.name = name;
    17     }
    18     public String getGender() {
    19         return gender;
    20     }
    21     public void setGender(String gender) {
    22         this.gender = gender;
    23     }
    24     public Integer getAge() {
    25         return age;
    26     }
    27     public void setAge(Integer age) {
    28         this.age = age;
    29     }
    30     
    31 }

     

     解析xml的读写方法xmlService.java

     1 package com.bwl.service;
     2 
     3 import java.io.InputStream;
     4 import java.util.ArrayList;
     5 import java.util.List;
     6 
     7 import org.xmlpull.v1.XmlPullParser;
     8 import org.xmlpull.v1.XmlSerializer;
     9 
    10 import com.bwl.pojo.student;
    11 
    12 import android.util.Xml;
    13 
    14 public class xmlService {
    15 
    16     public List<student> read(InputStream xml) throws Exception {
    17         List<student> list = null;
    18         student student = null;
    19         XmlPullParser xmlPull = Xml.newPullParser();
    20         xmlPull.setInput(xml, "UTF-8");// 设置解析值 ("路径","编码")
    21         int flag = xmlPull.getEventType();// 取得当前所指向的数据的事件类型
    22         do {
    23             switch (flag) {
    24             case XmlPullParser.START_DOCUMENT:// xml文档开始节点 start document
    25                 // 集合实例化
    26                 list = new ArrayList<student>();
    27                 break;
    28             case XmlPullParser.START_TAG:// xml文档开始节点解析
    29                 if ((xmlPull.getName()).equals("student")) {// 和节点内容进行比较
    30                     int id = new Integer(xmlPull.getAttributeValue(0));// 获取节点的第一个属性值
    31                     student = new student();
    32                     student.setId(id);
    33                 }
    34                 if ((xmlPull.getName()).equals("name")) {
    35                     String name=xmlPull.nextText();// 取得节点的下一个Text节点
    36                     student.setName(name);
    37                 }
    38                 if ((xmlPull.getName()).equals("gender")) {
    39                     String gender=xmlPull.nextText();
    40                     student.setGender(gender);
    41                 }
    42                 if ((xmlPull.getName()).equals("age")) {
    43                     int age=new Integer(xmlPull.nextText());
    44                     student.setAge(age);
    45                 }
    46                 break;
    47             case XmlPullParser.END_TAG:// xml结束节点 end document
    48                 if (xmlPull.getName().equals("student")) {// 节点结束判断
    49                     list.add(student);// student添加到list集合中
    50                     student = null;// student置为空
    51                 }
    52                 break;
    53             }
    54             flag = xmlPull.next();// 指向下一个节点
    55         } while (flag != XmlPullParser.END_DOCUMENT); // 执行到END DOCUMENT节点文档结束
    56         xml.close();
    57         return list;
    58     }
    59 
    60     public void write(List<student> list) throws Exception {
    61         XmlSerializer xmlSerializer = Xml.newSerializer();
    62         if (list != null) {
    63             xmlSerializer.startDocument("UTF-8", true);//添加statrt docunment事件
    64             xmlSerializer.startTag("", "students");//添加节点,参数(命名空间,节点名称)不使用命名空间的话可以使用""代替
    65             for (student student : list) {
    66                 xmlSerializer.setProperty("", "student");
    67                 xmlSerializer.attribute("", "id", student.getId().toString());//定义student节点胡属性参数:(命名空间,属性名,属性值)
    68                 xmlSerializer.setProperty("", "name");
    69                 xmlSerializer.text(student.getName());
    70                 xmlSerializer.endTag("", "student");//节点结束标记
    71                 xmlSerializer.setProperty("", "gender");
    72                 xmlSerializer.text(student.getGender());
    73                 xmlSerializer.endTag("", "gender");
    74                 xmlSerializer.setProperty("", "age");
    75                 xmlSerializer.text(student.getAge().toString());
    76                 xmlSerializer.endTag("", "age");
    77                 xmlSerializer.endTag("", "student");
    78             }
    79             xmlSerializer.endDocument();//添加END DOCUMENT事件
    80 
    81         }
    82     }
    83 
    84 }

      

  • 相关阅读:
    Ubuntu Windows双系统时差8小时问题解决
    linux无线网络配置
    Ubuntu 10.04上腾达W541U V2.0 无线网卡驱动的使用
    有些歌,放在这慢慢听
    [推荐]什么是程序员的优秀品质?
    如何阅读源代码
    Ubuntu中的有线、无线网络连接管理器──Wicd[译]
    linux下无线网卡解决方案之Ndiswrapper终极使用指南
    将jar文件做成exe可运行文件
    WOW裁缝1375详细攻略
  • 原文地址:https://www.cnblogs.com/lingzhishitu/p/4381272.html
Copyright © 2020-2023  润新知