Android 使用xml序列化器生成xml文件

在《Android 生成xml文件》一文中使用流的形式写入xml格式文件,但是存在一定的问题,那就是在短信内容中不能出现<>之类的括号,本文使用xml序列化器来解决

xml序列化器对象

XmlSerializer xs = Xml.newSerializer();
* 给序列化器设置输出流

File file = new File(Environment.getExternalStorageDirectory(), "backupsms.xml");
FileOutputStream fos = new FileOutputStream(file);
//给序列化器指定好输出流
xs.setOutput(fos, "utf-8");
* 开始生成xml文件

xs.startDocument("utf-8", true);
xs.startTag(null, "smss");
......

代码如下:

package com.wuyudong.createxml;

import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlSerializer;

import com.wuyudong.createxml.domain.Sms;
import com.wuyudong.createxml2.R;

import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.util.Xml;
import android.view.View;

public class MainActivity extends Activity {

    List<Sms> message;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 创建10条虚拟短信
        message = new ArrayList<Sms>();
        for (int i = 0; i < 10; i++) {
            Sms sms = new Sms("第" + i + "条短信", System.currentTimeMillis() + "",
                    "1", "" + i + i + i);
            message.add(sms);
        }
    }

    public void click(View v) {
        File file = new File(Environment.getExternalStorageDirectory(),
                "backup1.xml");
        try {
            FileOutputStream fos = new FileOutputStream(file);
            // 获取xml序列化器
            XmlSerializer xs = Xml.newSerializer();
            xs.setOutput(fos, "utf-8");
            //生成xml头
            xs.startDocument("utf-8", true);
            //添加xml根节点
            xs.startTag(null, "message");
            for (Sms sms : message) {
                xs.startTag(null, "sms");
                xs.startTag(null, "body");
                xs.text(sms.getBody());
                xs.endTag(null, "body");
                xs.startTag(null, "date");
                xs.text(sms.getDate());
                xs.endTag(null, "date");
                xs.startTag(null, "address");
                xs.text(sms.getAddress());
                xs.endTag(null, "address");
                xs.startTag(null, "type");
                xs.text(sms.getType());
                xs.endTag(null, "type");
                xs.endTag(null, "sms");
            }
            xs.endTag(null, "message");
            //生成xml头
            xs.endDocument();

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}
时间: 2024-08-07 21:20:30

Android 使用xml序列化器生成xml文件的相关文章

使用XML序列化器生成XML文件和利用pull解析XML文件

首先,指定XML格式,我指定的XML格式如下: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <message> <sms> <body> 陈驰0 </body> <date> 1462162910995 </date> <address> 1380 </address> <type> 1 </type> &

使用XMl序列化器生成xml文件

生成XML文件 创建几个虚拟的短信对象,存在list中 备份数据通常都是备份至sd卡 使用StringBuffer拼接字符串 把整个xml文件所有节点append到sb对象里 sb.append("<?xml version='1.0' encoding='utf-8' standalone='yes' ?>"); //添加smss的开始节点 sb.append("<smss>"); ....... 把sb写到输出流中 fos.write(s

XML序列化器读取XML数据

PS:标题我还真的不知道该怎么取比较好,大家将就下吧^_^ 场景:上周接到一个任务,要求我把ASP写的会员充值功能,用ASP.NET复制一遍,没有给我需求文档,就是让我根据代码去分析业务逻辑,然后看到一个IP识别功能,就是判断该会员卡是否可以在该IP段内使用,看着一大片的用if then 写的IP地址判断,我就蛋疼了.... 我就一直琢磨该怎么优化代码,开始用逗号去分割,然后把IP地址写在web.config中,但是太多了,然后请教同事,同事说可以用XML配置(web.config虽然也是XML

Android 存储学习之保存系统短信到SD卡(使用XML序列化器)

上节中我们是手动拼接xml文件,但是上节中那样的做法会有一个问题,比如: //插入消息的内容 sBuffer.append("<body>"); sBuffer.append(sms.getBody() + "</body>"); sBuffer.append("</body>"); 我在插入消息内容的时候,在追加内容里面加了个 </body>. 这样就会出现解析错误的 所以这节我们使用xml的序列

Android下使用pull解析器生成XML文件、读取XML文件

Android下使用Pull解析器 1,Pull解析器的运行方式与SAX解析器相似.它提供了类似的事件,如:开始元素和结束元素事件. 2,使用parser.next()可以进入下一个元素并触发相应事件. 3,事件将作为一个int数值被发送,因此可以使用一个switch对相应的事件进行处理. 4,当元素开始解析时,调用parser.nextText()方法可以获取下一个Text类型节点的值. 5,相关API: 获得当前节点事件类型:parser.getEventType(); 获得下一节点事件类型

使用Pull解析器生成XML文件和读取xml文件

有些时候,我们需要生成一个XML文件,生成XML文件的方法有很多,如:可以只使用一个StringBuilder组拼XML内容,然后把内容写入到文件中:或者使用DOM API生成XML文件,或者也可以使用pull解析器生成XML文件,这里推荐大家使用Pull解析器. 一.布局界面 [html] view plaincopyprint? <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

使用Pull解析器生成XML文件

有些时候,我们需要生成一个XML文件,生成XML文件的方法有很多,如:可以只使用一个StringBuilder组拼XML内容,然后把内容写入到文件中:或者使用DOM API生成XML文件,或者也可以使用pull解析器生成XML文件,这里推荐大家使用Pull解析器. 1.使用Pull解析器生成一个与itcast.xml文件内容相同的myitcast.xml文件,代码在下方 public static String writeXML(List<Person> persons, Writer wri

IOSerialize,xml和json,soap序列化器,二进制序列化器,XML序列化器,文件 检查、新增、复制、移动、删除

1 文件夹/文件 检查.新增.复制.移动.删除,2 文件读写,记录文本日志/读取配置文件3 三种序列化器4 xml和json1.文件夹/文件 检查.新增.复制.移动.删除,2 文件读写,记录文本日志/读取配置文件 using System.IO; /// <summary> /// 配置绝对路径 /// </summary> private static string LogPath = ConfigurationManager.AppSettings["LogPath&

Android中如何提取和生成mp4文件

随着Android 4.4及以上版本的逐渐普及,Android 4.1引入的MediaExtractor类,以及Android 4.3引入的MediaMuxer类,终于可以开始正式地"发光发热"了. MediaMuxer类主要用于将音频和视频数据进行混合生成多媒体文件(如:mp4文件),而MediaExtractor则刚好相反,主要用于多媒体文件的音视频数据的分离. 本文将介绍如何利用Android SDK提供的MediaExtractor和MediaMuxer类来完成mp4文件的提取