Android Xml file generation, Xml data format writing


To generate data in xml file format, Android provides Xml.newSerializer();, which can be understood as Xml serialization;

Serialization: Throw the data (file, databases, xml, etc.) in the memory to a certain place; 
Deserialization: Take the data (file, databases, xml, etc.) of a certain place into the memory;

Since it is Android operating Xml, use the API provided by Android instead of the API provided by Java, DOM analysis, SAX analysis;

    @Override
    public void onClick(View v) {

        // 模拟20条Person数据
        List<Person> persons = new ArrayList<Person>();
        for (int i=0; i<20; i++) {
            persons.add(new Person(i, "zhangsan" + i, i+10));
        }
        Log.d(TAG, "persons.size():" + persons.size()); // persons.size():20

        try {
            // 如何创建xml文件,然后把这20条数据,写入xml文件里面去,一定是去看Android提供的API
            XmlSerializer serializer = Xml.newSerializer();
            // 指定流目录
            OutputStream os = openFileOutput("persons.xml", Context.MODE_PRIVATE);
            // 设置指定目录
            serializer.setOutput(os, "UTF-8");

            // 开始写入Xml格式数据
            // 开始文档
            // 参数一:指定编码格式   参数二:是不是独立的xml(这个xml与其他xml是否有关联)
            serializer.startDocument("UTF-8", true);

            // 开始根标签
            // 参数一:命名空间   参数二:标签名称
            serializer.startTag(null, "persons");

            for (Person person : persons) {
                // 开始子标签
                serializer.startTag(null, "person");

                // 设置属性
                serializer.attribute(null, "id", String.valueOf(person.getId()));

                // 设置name
                // 开始name标签
                serializer.startTag(null, "name");
                // 写入值
                serializer.text(person.getName());
                // 结束name标签
                serializer.endTag(null, "name");

                // 设置age
                // 开始age标签
                serializer.startTag(null, "age");
                // 写入age值
                serializer.text(String.valueOf(person.getAge()));
                // 结束age标签
                serializer.endTag(null, "age");

                // 结束子标签
                serializer.endTag(null, "person");
            }

            // 结束根标签
            serializer.endTag(null, "persons");

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

The result after execution: 


open to take a look: 

Thank you for watching. More wonderful technical blogs will be updated continuously. Thank you for your attention.

Guess you like

Origin blog.csdn.net/Androiddddd/article/details/108503793