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 }
  • 相关阅读:
    如何通过命令行窗口查看sqlite数据库文件
    eclipse自动补全的设置
    文本装饰
    注释和特殊符号
    文本装饰
    网页背景
    通过ArcGIS Server admin 查看和删除已注册的 Web Adaptor
    通过 ArcGIS Server Manager 查看已安装的 Web Adaptor
    通过 ArcGIS Server Manager 验证 DataStore
    Windows上安装ArcGIS Enterprise——以 Windows Server 2012 R2上安装 ArcGIS 10.8为例
  • 原文地址:https://www.cnblogs.com/friends-wf/p/4497670.html
Copyright © 2011-2022 走看看