源码-Android XmlSerializer 保存文件问题

问题描述

Android XmlSerializer 保存文件问题

XmlSerializer serializer = Xml.newSerializer();
XmlSerializer是个接口,那这行代码怎么理解?求大牛指导

解决方案

这是XML解析的实例:

 public class TestCase extends AndroidTestCase {

    public void test() {
//        writeXmlToLocal();

        List<Person> personList = parserXmlFromLocal();

        for (Person person : personList) {
            Log.i("TestCase", person.toString());
        }
    }

    /**
     * 写xml文件到本地
     */
    private void writeXmlToLocal() {
        List<Person> personList = getPersonList();

        // 获得序列化对象
        XmlSerializer serializer = Xml.newSerializer();

        try {
            File path = new File(Environment.getExternalStorageDirectory(), "persons.xml");
            FileOutputStream fos = new FileOutputStream(path);
            // 指定序列化对象输出的位置和编码
            serializer.setOutput(fos, "utf-8");

            serializer.startDocument("utf-8", true);    // 写开始 <?xml version='1.0' encoding='utf-8' standalone='yes' ?>

            serializer.startTag(null, "persons");        // <persons>

            for (Person person : personList) {
                // 开始写人

                serializer.startTag(null, "person");    // <person>
                serializer.attribute(null, "id", String.valueOf(person.getId()));

                // 写名字
                serializer.startTag(null, "name");        // <name>
                serializer.text(person.getName());
                serializer.endTag(null, "name");        // </name>

                // 写年龄
                serializer.startTag(null, "age");        // <age>
                serializer.text(String.valueOf(person.getAge()));
                serializer.endTag(null, "age");        // </age>

                serializer.endTag(null, "person");    // </person>
            }

            serializer.endTag(null, "persons");            // </persons>

            serializer.endDocument();        // 结束
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    private List<Person> getPersonList() {
        List<Person> personList = new ArrayList<Person>();

        for (int i = 0; i < 30; i++) {
            personList.add(new Person(i, "wang" + i, 18 + i));
        }

        return personList;
    }

}

接口不能new,这里也不是new出来的,是通过Xml类的静态方法newSerializer()获得一个XmlSerializer对象,再把这个对象赋值给serializer引用

解决方案二:

android问题:保存文件后文件内容为空
Android中R文件丢失问题解决办法

解决方案三:

您是怎么分析出来它是个引用的啊?

时间: 2024-11-08 17:26:28

源码-Android XmlSerializer 保存文件问题的相关文章

android开发-如何用Android Studio将源码打包成AAR文件,并且AAR文件中包含源码

问题描述 如何用Android Studio将源码打包成AAR文件,并且AAR文件中包含源码 如何用Android Studio将源码打包成AAR文件,并且AAR文件中包含源码.类似与jar文件打包后可以看到源代码一样. 解决方案 android studio本地引用aar打包文件(.aar)Android studio 打包aarandroid studio 把源码和资源文件一起打包生成aar包

Tomcat源码分析——server.xml文件的解析

前言 在<Tomcat源码分析--server.xml文件的加载>一文中我们介绍了server.xml的加载,本文基于Tomcat7.0的Java源码,接着对server.xml文件是如何解析的进行分析. 概要 规则 Tomcat将server.xml文件中的所有元素上的属性都抽象为Rule,以Server元素为例,在内存中对应Server实例,Server实例的属性值就来自于Server元素的属性值.通过对规则(Rule)的应用,最终改变Server实例的属性值. Rule是一个抽象类,其中

H264解码器源码(Android 1.6 版)

原文:http://www.cnblogs.com/mcodec/articles/1780598.html H264解码器源码,移植ffmpeg中的H264解码部分到Android,深度删减优化,在模拟器(320x480)中验证通过. 程序的采用jni架构.界面部分,文件读取,视频显示都是用java做的,底层的视频解码用C来做满足速度的要求. 在这个版本中,从H264码流中分割出Nal是在java层做的,这样在java层直接调用解码时就知道是否有显示视频,缺点的就是耦合度/封装性差一点. 如果

源码-android 系统如何给功能打宏开关?

问题描述 android 系统如何给功能打宏开关? 比如:我做了一个通话自动录音的功能,改了源码,功能实现了,但现在问题来了,有的 客户需要这个功能,有的客户不需要这个功能,所以,想给它添加一个开关,需要这个功能的客户,将其开关打开,不需要此功能的客户,在编译系统的时候将其关闭,现在 需要了解开关是在哪个地方加,加到哪个文件里面,如何读取这个开关. 望大神指点.谢谢! 解决方案 定义全局变量Config控制, gradle打包时改变变量 解决方案二: 定义全局变量Config控制, gradle

源码-android机器中连接VPN成功之后叮的一声怎么实现的?

问题描述 android机器中连接VPN成功之后叮的一声怎么实现的? 如题,表示没有找到源码里面有这块,不知道哪位在知道? 声音与notification的声音是一样的. 解决方案 之前做过notification的提示音,就是播放指定的音频文件,使用系统的也可以,连接VPN提示音也可以这样做

源码-android 编程如何发邮件??

问题描述 android 编程如何发邮件?? 找了好多源码照着写 结果都没能够成功发送邮件 我想实现的功能是静默发送邮件 求大神指点 解决方案 如果你看了很多代码都没有实现,那么很可能你的邮件服务商有问题,比如不支持你通过smtp协议发邮件,你的端口.用户名.密码等不正确,或者你的邮件被视作垃圾邮件而被拒绝发送. 建议你换一个邮件商,最好用付费的商业邮箱. 解决方案二: 你需要研究一下邮件协议:SMTP.POP3.IMAP4等

源码-Android中事件传递机制原理

问题描述 Android中事件传递机制原理 我们知道,所有的控件直接或间接的继承子View,View的子类有ViewGroup,并且ViewGroup的子类也会有其他的子View,那么他们之间事件的传递机制是怎样的?对源码有研究的吗? 解决方案 android事件传递机制Android 事件的传递机制Android之事件传递机制 解决方案二: http://blog.csdn.net/pi9nc/article/details/9281829http://www.csdn123.com/html

源码-android中FLAG_ACTIVITY_NEW_TASK问题

问题描述 android中FLAG_ACTIVITY_NEW_TASK问题 在service中启动activity,要添加一句 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 但添加后,新的activity不能正常显示,怎么办?附源码: Intent intent = new Intent(); //指定动作名称 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction(Dev

源码-Android调用连连支付的支付接口

问题描述 Android调用连连支付的支付接口 现在在做一个Android支付平台,客户要求调用连连支付的接口,请问如何实现?最好附上源码,3QS!!! 解决方案 请看下支付宝或者微信支付的官方文档