2 u013266600 u013266600 于 2016.04.13 09:48 提问

Android XmlSerializer 保存文件问题

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

3个回答

Wei_Smile
Wei_Smile   2016.04.14 21:34

这是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引用

u013266600
u013266600 回复李牧羊: 嗯嗯,我明白了!谢谢您
一年多之前 回复
Wei_Smile
Wei_Smile 回复laola的故事: 这样说吧,这种形式 A a=new A(),的意思就是说吧一个new出来的A对象赋值给他的引用,这里 a就是引用,因为他可以说是A的一个代表
一年多之前 回复
u013266600
u013266600 您是怎么分析出来它是个引用的啊?
一年多之前 回复
CSDNXIAOD
CSDNXIAOD   2016.04.13 09:52

android问题:保存文件后文件内容为空
Android中R文件丢失问题解决办法
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

u013266600
u013266600   2016.04.15 10:26

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!