xml序列化

来源:互联网 发布:未闻花名网络歌手资源 编辑:程序博客网 时间:2024/05/22 04:50

package com.example.myapplication;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Xml;import android.view.View;import org.xmlpull.v1.XmlPullParserException;import org.xmlpull.v1.XmlPullParserFactory;import org.xmlpull.v1.XmlSerializer;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    private List<UserSMS> list;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);//        模拟短信内容        list = new ArrayList<>();        for (int i = 0;i<10;i++){            UserSMS sm = new UserSMS();            sm.setData("2017"+i);            sm.setAdress("家里"+i);            sm.setBody("你好"+i);            list.add(sm);        }    }    public void click1(View view){//        第一种xml序列化的方法,利用StringBuffer类直接拼接。//        这里也可以不用StringBuffer类,用String也可以,第一种方法就是拼接,拼接,只要可以拼接都可以。        StringBuffer sb = new StringBuffer();        sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");        sb.append("<SMS>");        for (UserSMS sm:list){            sb.append("<sms>");            sb.append("<adress>");            sb.append(sm.getAdress());            sb.append("</adress>");            sb.append("<body>");            sb.append(sm.getBody());            sb.append("</body>");            sb.append("<data>");            sb.append(sm.getData());            sb.append("</data>");            sb.append("</sms>");        }        sb.append("</SMS>");//        将文件存入一个文件里。        try {            FileOutputStream fos = new FileOutputStream(new File(getFilesDir().getPath(),"info.xml"));            fos.write(sb.toString().getBytes());        } catch (Exception e) {            e.printStackTrace();        }    }    public void click2(View view) throws Exception {//xml序列化的第二种方法,利用XmlSerializer类来实现,这是安卓里自己提供的。//第一步要获取XmlSerializer实例,获取实例有两种方法。//        第一种方法,利用工厂        XmlPullParserFactory xmlPullParserFactory = XmlPullParserFactory.newInstance();        XmlSerializer xmlSerializer = xmlPullParserFactory.newSerializer();//        第二种方法,利用Xml工具获取,注意这里的Xml是一个工具类。       // XmlSerializer xmlSerializer1 = Xml.newSerializer();//        第二步,调用方法,告诉生成 一个xml文件,第一个参数fileoutputstream,第二个参数编码,这里写UTF-8.        FileOutputStream fos = new FileOutputStream(new File(getFilesDir(),"in.xml"));        xmlSerializer.setOutput(fos,"UTF-8");//        定义文档声明,第一个参数是编码,第二个参数是判断是否是独立的Xml文件,这里不太理解???        xmlSerializer.startDocument("UTF-8",true);//        写根标签,第一个参数命名空间,第二个是根标签的名字,命名空间现在不太理解???这里没有命名空间,        //这里写null.        xmlSerializer.startTag(null,"Sms");        for (UserSMS s :list){            xmlSerializer.startTag(null,"sms");            xmlSerializer.startTag(null,"adress");            xmlSerializer.text(s.getAdress());            xmlSerializer.endTag(null,"adress");            xmlSerializer.startTag(null,"body");            xmlSerializer.text(s.getBody());            xmlSerializer.endTag(null,"body");            xmlSerializer.startTag(null,"data");            xmlSerializer.text(s.getData());            xmlSerializer.endTag(null,"data");            xmlSerializer.endTag(null,"sms");        }        //第一个参数命名空间,第二个是根标签的名字        xmlSerializer.endTag(null,"Sms");        xmlSerializer.endDocument();    }}



原创粉丝点击