xml序列化和解析

序列化

private XmlSerializer XmlSerializerserializer;
	private File Filefile;
	private FileOutputStream OutputStreamos;
    private File file;
    private XmlSerializer serializer;
    private OutputStream os;
    private List<Student> list;


    public void onClick(View v) {
// 序列化
        XmlSerializerserializer = Xml.newSerializer();
        try {
            Filefile = new File(Environment
                    .getExternalStorageDirectory(), "student.xml");
            OutputStreamos = new FileOutputStream(file);
            serializer.setOutput(os, "utf-8");// 设置存放位置

// 开始序列化
            serializer.startDocument("utf-8", true);// 开始文档
            serializer.startTag(null, "students");
            for (int i = 0; i < list.size(); i++) {
// 开始写内层标签
//name
                serializer.startTag(null, "student");
                serializer.startTag(null, "name");
                serializer.text(list.get(i).getName());
                serializer.endTag(null, "name");
//age
                serializer.startTag(null, "age");
                serializer.text(list.get(i).getAge());
                serializer.endTag(null, "age");
                serializer.endTag(null, "student");

            }
            serializer.endTag(null, "students");

            serializer.endDocument();// 结束文档
        } catch (Exception e) {
//TODO Auto-generated catch block
            e.printStackTrace();
        }
        Toast.makeText(MainActivity.this, "序列化完毕", 0).show();

    }

pull解析

 

 

private final FileInputStream InputStreaminputStream;
private InputStream inputStream;
public voidonClick(View v) {
List<Student>list = null;
Studentstudent = null;
        try{
//设置解析文件路径
            XmlPullParser parser = Xml.newPullParser();//获得pull解析器
            InputStreaminputStream = new FileInputStream(new File(
                    Environment.getExternalStorageDirectory(),
                    "student.xml"));
            parser.setInput(inputStream,"utf-8");
//开始解析
            int type = parser.getEventType();//获取事件的类型
            while (type !=XmlPullParser.END_DOCUMENT) {//只要事件类型不是结束标签,就一直往下解析
                switch(type) {
                    case XmlPullParser.START_TAG://读取到这里就表示开始读取内容了,这里标识的是开始事件
                        if (parser.getName().equals("students")){//读取到这里的时候创建集合
                            list= new ArrayList<Student>();
                        } else if(parser.getName().equals("student")) {//读取到这里应该创建对象
                            student= new Student();
                        }else if (parser.getName().equals("name")) {
                            student.setName(parser.nextText());
                        }else if (parser.getName().equals("age")) {
                            student.setAge(parser.nextText());
                        }
                        break;
                    
                    caseXmlPullParser.END_TAG:
                    if(parser.getName().equals("student")) {
                        list.add(student);//把对象放入集合
                        student = null;//装入集合后,把对象置为null,方便再次封装
                    }
                }
                type = parser.next();//这一步是为了让事件继续推进
            }
        }catch (Exception e) {
//TODO Auto-generated catch block
            e.printStackTrace();
        }
//解析完成后提示,然后打印
        Toast.makeText(MainActivity.this,"pull解析完毕", 0).show();
        System.out.println(list);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值