zoukankan      html  css  js  c++  java
  • android xml操作

      1 import java.io.FileInputStream;
      2 import java.io.FileOutputStream;
      3 import java.util.ArrayList;
      4 import java.util.List;
      5 
      6 import org.xmlpull.v1.XmlPullParser;
      7 import org.xmlpull.v1.XmlSerializer;
      8 
      9 import android.util.Log;
     10 import android.util.Xml;
     11 
     12 import com.itheima27.xmlparserserializer.entities.Person;
     13 
     14 public class XmlUtils {
     15 
     16     private static final String TAG = "XmlUtils";
     17 
     18     /**
     19      * 把数据以xml形式写到本地
     20      */
     21     public void writeToLocal() throws Exception {
     22     
     23         List<Person> personList = new ArrayList<Person>();
     24         for (int i = 0; i < 30; i++) {
     25             personList.add(new Person(i, "王" + i, 20 + i));
     26         }
     27         
     28         XmlSerializer serializer = Xml.newSerializer();        // 创建Xmlserializer的对象
     29         // 指定序列化对象输出的流
     30         FileOutputStream fos = new FileOutputStream("/mnt/sdcard/person.xml");
     31         serializer.setOutput(fos, "utf-8");
     32         
     33         serializer.startDocument("utf-8", true);    // 写xml头
     34         
     35         serializer.startTag(null, "persons");    // 开始的根节点
     36         
     37         for (Person person : personList) {
     38             serializer.startTag(null, "person");
     39             serializer.attribute(null, "id", String.valueOf(person.getId()));
     40             
     41             // 写人的姓名
     42             serializer.startTag(null, "name");
     43             serializer.text(person.getName());
     44             serializer.endTag(null, "name");
     45             
     46             // 写人的年龄
     47             serializer.startTag(null, "age");
     48             serializer.text(String.valueOf(person.getAge()));
     49             serializer.endTag(null, "age");
     50             
     51             serializer.endTag(null, "person");
     52         }
     53         
     54         serializer.endTag(null, "persons");        // 结束的根节点
     55         
     56         serializer.endDocument();    // 标记xml输出完毕
     57     }
     58     
     59     /**
     60      * 从本地文件解析xml数据
     61      */
     62     public void parserXmlFromLocal() throws Exception {
     63         // 创建Pull解析器对象
     64         XmlPullParser parser = Xml.newPullParser();
     65         // 指定解析的文件
     66         FileInputStream fis = new FileInputStream("/mnt/sdcard/person.xml");
     67         parser.setInput(fis, "UTF-8");
     68         
     69         int eventType = parser.getEventType();        // 获得解析器的第一个事件类型 
     70         
     71         List<Person> personList = null;
     72         Person person = null;
     73         String name;
     74         
     75         while(eventType != XmlPullParser.END_DOCUMENT) {        // 如果事件类型不等于结束的类型, 继续循环
     76             String tagName = parser.getName();        // 获得当前节点的名称
     77 
     78             // 解析数据
     79             switch (eventType) {
     80             case XmlPullParser.START_TAG:        // 代表开始节点 <persons>
     81                 
     82                 if("persons".equals(tagName)) {
     83                     // 初始化集合
     84                     personList = new ArrayList<Person>();
     85                 } else if("person".equals(tagName)) {
     86                     person = new Person();
     87                     person.setId(Integer.valueOf(parser.getAttributeValue(null, "id")));
     88                 } else if("name".equals(tagName)) {
     89                     name = parser.nextText();        // 当前是<name> 节点 nextText是取<name> 后边的值
     90                     person.setName(name);
     91                 } else if("age".equals(tagName)) {
     92                     person.setAge(Integer.parseInt(parser.nextText()));
     93                 }
     94                 break;
     95             case XmlPullParser.END_TAG:        // 代表结束节点 </person>
     96                 if("person".equals(tagName)) {        // 当前是</person>
     97                     // 把上面person的对象添加到集合中
     98                     personList.add(person);
     99                 }
    100                 break;
    101             default:
    102                 break;
    103             }
    104             
    105             eventType = parser.next();        // 赋值下一个事件类型
    106         }
    107         
    108         
    109         if(personList != null) {
    110             for (Person p : personList) {
    111                 Log.i(TAG, p.toString());
    112             }
    113         }
    114     }
    115 }
  • 相关阅读:
    codevs 1569 最佳绿草

    luogu P3378 【模板】堆
    cogs 762. [USACO Open09] 奶牛队列
    各种 Python 实现的简单介绍与比较
    与 的区别
    Python3 print()函数sep,end,file参数用法练习
    python基础
    servlet篇 之 跳转问题
    servlet篇 之 servlet的访问
  • 原文地址:https://www.cnblogs.com/friends-wf/p/4497670.html
Copyright © 2011-2022 走看看