设为首页 加入收藏

TOP

Android笔记——Android中数据的存储方式(二)(二)
2017-10-12 10:08:34 】 浏览:10029
Tags:Android 笔记 数据 存储 方式
smslist.add(sms); } }
public void onClick(View v){ // StringBuffer sb = new StringBuffer(); //添加属性到sb中 sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); sb.append("<messages>"); for (Sms sms : smslist) {        sb.append("<message>"); sb.append("<address>"); sb.append(sms.getAddress()); sb.append("</address>"); sb.append("<date>"); sb.append(sms.getDate()); sb.append("</date>"); sb.append("<type>"); sb.append(sms.getType()); sb.append("</type>"); sb.append("<body>"); sb.append(sms.getBody()); sb.append("</body>"); sb.append("</message>"); } sb.append("</messages>"); //写入外出储存路径 File file = new File("strorage/sdcard/sms.xml"); try { FileOutputStream fos = new FileOutputStream(file); fos.write(sb.toString().getBytes()); fos.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
  • 权限:AndroidManifest.xml中添加android.permission.WRITE_EXTERNAL_STORAGE
  • 问题:实际开放中,当然不会像上面那样拼接字符串生成xml文件,它是很大有弊端的,如下图:
      • 生成xml文件,用浏览器打开,那么就会出现问题了:OPening and ending tag mismatch.
      • 其实谷歌有自己一套自己的生成解析xml的API,使用序列化器XmlSerializer生成xml就是其中的API
  •    3.2使用序列化器XmlSerializer生成xml

    • 布局文件:同上
    •  java代码:    
      • Sms.java(javabean对象):同上  
      • MainActivity.java  
    package com.bokeyuan.xmlserilizer;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.xmlpull.v1.XmlSerializer;
    
    import com.bokeyuan.createxml.domain.Sms;
    
    import android.os.Bundle;
    import android.util.Xml;
    import android.view.View;
    import android.app.Activity;
    
    public class MainActivity extends Activity {
    
        List<Sms> smsList;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            smsList = new ArrayList<Sms>();
            
            //虚构10条短信
            for (int i = 0; i < 10; i++) {
                Sms sms = new Sms("138"+i+i, System.currentTimeMillis() + "", "1", "哈哈"+i);
                smsList.add(sms);
            }
        }
        
        public void click(View v){
            //使用xml序列化器生成xml文件
            //1.拿到序列化器对象
            XmlSerializer xs = Xml.newSerializer();
            
            File file = new File("sdcard/sms2.xml");
            try {
                //2.对序列化器进行初始化
                FileOutputStream fos = new FileOutputStream(file);
                //OutputStream :指定文件的保存路径
                //encoding:指定生成的xml文件的编码
                xs.setOutput(fos, "utf-8");
                
                //3.开始生成文件
                //生成头结点
                xs.startDocument("utf-8", true);
                //生成开始标签
                xs.startTag(null, "messages");
                
                for (Sms sms : smsList) {
                    xs.startTag(null, "message");
                    
                    xs.startTag(null, "address");
                    //生成文本节点
                    xs.text(sms.getAddress());
                    xs.endTag(null, "address");
                    
                    xs.startTag(null, "date");
                    //生成文本节点
                    xs.text(sms.getDate());
                    xs.endTag(null, "date");
                    
                    xs.startTag(null, "type");
                    //生成文本节点
                    xs.text(sms.getType());
                    xs.end
    首页 上一页 1 2 3 4 下一页 尾页 2/4/4
    】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
    上一篇自定义View等待旋转 下一篇android对象序列化Parcelable浅析

    最新文章

    热门文章

    Hot 文章

    Python

    C 语言

    C++基础

    大数据基础

    linux编程基础

    C/C++面试题目