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 回复李牧羊: 嗯嗯,我明白了!谢谢您
2 年多之前 回复
Wei_Smile
Wei_Smile 回复laola的故事: 这样说吧,这种形式 A a=new A(),的意思就是说吧一个new出来的A对象赋值给他的引用,这里 a就是引用,因为他可以说是A的一个代表
2 年多之前 回复
u013266600
u013266600 您是怎么分析出来它是个引用的啊?
2 年多之前 回复
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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
android xml文件的序列化--XmlSerializer简单用法
在开发过程中呢,会有生成一个xml文件的需要,那么下面,我们以备份短信为例,看一下如何生成一份xml文件。假如说我们要备份生成的短信文件是这样子的:第一种方法:用StringBuffer拼接字符串生成一份xml文件。 /** * 备份短信(往xml里写数据)。普通方法,用StringBuffer */ private void writeXml1() {
Android之pull生成XML及XmlSerializer详解
Android之pull生成XML及XmlSerializer详解文章链接:http://blog.csdn.net/qq_16628781/article/details/70161601知识点 XmlSerializer实例的源码解析; XmlSerializer类方法详解; pull生成XML的实例; 新名词记录{XmlSerializer;XmlSerializerFactory;Strin
如何利用Android XmlSerializer生成XML文件
参考文章: http://www.anddev.org/write_a_simple_xml_file_in_the_sd_card_using_xmlserializer-t8350.html 解析xml文件的的文章很多,但是Android里生成xml文件的文章就很少了。偶然机会找到一篇相关发面的文章,就分享一下了: 用到的主要是XmlSerializer,利用它来写xml文件
Android中使用XmlSerializer拼装XML数据
<br />经常在Http Post Xml请求的时候,需要如何拼装XML数据,在Android中如何来做的呢,通常我们使用FastXmlserializer这个类。比如要拼装如下的XML<br /><?xml version="1.0" encoding="UTF-8" standalone="yes"?><br /><Request xmlns="http://www.demo.com"><br />  <operation>GetCustomerTariffInfo</operation><br />
Android XmlSerializer 换行
最近做的功能中,有一个是用Android 的 XmlSerializer 生成XML文件然后发送出去。不过发现生成的XML内容全部连在了一起,没有换行,难以阅读: 那么来看看XmlSerializer的代码是怎么写的: serializer.startTag("", "APP_TYPE"); serializer.text("1"); serializer.endTag("", "AP
Android之XML生成与解析工具——XmlSerializer
开发Android项目时会遇到各种数据的存储与获取,然而保存数据的方式有很多中,例如SQlite数据库、网络服务、XML、文件流等。在面向对象开发的人员肯定偏向于封装数据模型为对象进行反射等操作获取信息,这就需要编写一些特定场合下的工具类了。本人在开发一款医疗APP时就遇到将XML格式的数据保存到客户端本地,需要时再进行解析。这里就总结下XML的生成与解析工具的编写。 将数据(即数据模型)传入工
XmlSerializer的几个用法
 1. 去掉 attribute 里面的 xmlns:xsi 和 xmlns:xsd            XmlSerializer xmlSerializer = new XmlSerializer(typeof(Class1));            Class1 class1 = new Class1();            class1.Property = "
XmlSerializer的坑
https://www.cnblogs.com/mad/p/xmlserializer_filenotfoundexception.htmlXmlSerializer我想现在用的人可能不多了,大家都在用Json。我现在所在的公司依然在用,所以发现了这个坑。当然这个坑存在很久了只是没用过所以才发现。事情是这样的,测试那边说系统偶尔会报找不到 xxxx.XmlSerizlizers 的引用,File ...
android XmlSerializer 组拼xml
组拼Xml 文件 public static void zupinXml(Context context) throws IllegalArgumentException, IllegalStateException, IOException{ //SD卡地址  ,注意加权限 String path = Environment.getExternalStorageDirector
使用XMLSerializer()方式转成json的问题
引入XMLSerializer之后,通过JSON respJson = new XMLSerializer().read(responseXml);方法江xml转换为json字符串。这种方法虽然简单但是有个很大的缺陷,如下,当一个节点(eg:content)下只有一个节点的时候,利用XMLSerializer()去解析的时候就程序无法识别它是一个list还是一个单节点。a、报文xml:&amp;lt;Re...