laola的故事 2016-04-13 01:48 采纳率: 25%
浏览 1347

Android XmlSerializer 保存文件问题

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

  • 写回答

2条回答

  • 斩月sama 博客专家认证 2016-04-14 13: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引用

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!