zoukankan      html  css  js  c++  java
  • 【Android开发】XML文件解析

    最近在做一个项目,涉及到XML文件的解析,废话不多说,如下:



    读取

     1 private ArrayList<Data> readXMLLocked() {
     2         File file = new File(mDirPath, mFileName);
     3         if (!file.exists()) {
     4             return null;
     5         }
     6         ArrayList list = new ArrayList<Data>();
     7         InputStream in = null;
     8         try {
     9             in = new FileInputStream(file);
    10             XmlPullParser pullParser = Xml.newPullParser();
    11             pullParser.setInput(in, "UTF-8");
    12             int event = pullParser.getEventType();
    13             while (event != XmlPullParser.END_DOCUMENT) {
    14                 switch (event) {
    15                     case XmlPullParser.START_DOCUMENT:
    16                         break;
    17                     case XmlPullParser.START_TAG:
    18                         String name = pullParser.getName();
    19                         ILog.d(TAG, "xmlname:" + name);
    20                         if (TAG_ITEM.equals(name)) {
    21                             int count = pullParser.getAttributeCount();
    22                             Data data = new Data();
    23                             for (int i = 0; i < count; i++) {
    24                                 String attName = pullParser.getAttributeName(i);
    25                                 if (ATT_DATA.equals(attName)) {
    26                                     data.setmWeight(Float.valueOf(pullParser.getAttributeValue(i)));
    27                                 } else if (ATT_TIME.equals(attName)) {
    28                                     data.setTime(Long.valueOf(pullParser.getAttributeValue(i)));
    29                                 }
    30                             }
    31                             list.add(data);
    32                         } else if (TAG_VERSION.equals(name)) {
    33 
    34                         }
    35                         break;
    36                     case XmlPullParser.END_TAG:
    37                         break;
    38                 }
    39                 event = pullParser.next();
    40             }
    41         } catch (Exception e) {
    42             e.printStackTrace();
    43             return null;
    44         } finally {
    45             try {
    46                 in.close();
    47             } catch (Exception e) {
    48                 e.printStackTrace();
    49             }
    50         }
    51         return list;
    52     }

    保存:

     1 private synchronized boolean saveXMLLocked(ArrayList<Data> list, OutputStream outStream) {
     2         try {
     3             XmlSerializer serializer = Xml.newSerializer();
     4             serializer.setOutput(outStream, "UTF-8");
     5             serializer.startDocument("UTF-8", true);
     6             serializer.startTag(null, TAG_IWEIHT);
     7             serializer.startTag(null, TAG_VERSION);
     8             serializer.text(String.valueOf(DBHelper.VERSION));
     9             serializer.endTag(null, TAG_VERSION);
    10             for (Data data : list) {
    11                 serializer.startTag(null, TAG_ITEM);
    12                 serializer.attribute(null, ATT_DATA, String.valueOf(data.getWeight()));
    13                 serializer.attribute(null, ATT_TIME, String.valueOf(data.getTime()));
    14                 serializer.endTag(null, TAG_ITEM);
    15             }
    16             serializer.endTag(null, TAG_IWEIHT);
    17             serializer.endDocument();
    18         } catch (Exception e) {
    19             e.printStackTrace();
    20             return false;
    21         } finally {
    22             try {
    23                 outStream.flush();
    24                 outStream.close();
    25             } catch (Exception e) {
    26                 e.printStackTrace();
    27             }
    28         }
    29         return true;
    30     }

    对应的XML文件的格式如下:

    1 <?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
    2 <iweight>
    3     <version>1</version>
    4         <item data="25.0" time="1482927231388" />
    5         <item data="75.0" time="1482927234989" />
    6         <item data="48.0" time="1482927238008" />
    7 </iweight>
  • 相关阅读:
    02-01官网静默模式安装WebLogic
    01-java技术体系基础
    MySQL安装的三种方式
    centos虚拟机初始化脚本
    Nginx编译配置介绍
    word发布博客至博客园
    Bash shell编程的语法知识点(1)
    c=$[$c%5]到let c=$c%5的转换
    <转>shell经典,shell十三问
    进程管理工具htop/glances/dstat的使用
  • 原文地址:https://www.cnblogs.com/yanyojun/p/6230759.html
Copyright © 2011-2022 走看看