Android-Xml文件生成,Xml數據格式寫入


 

生成xml文件格式數據,Android提供了Xml.newSerializer();,可以理解為Xml序列化;

序列化:把內存里面的數據(file,databases,xml 等等) 丟給某一個地方;
反序列化:把某個地方的數據(file,databases,xml 等等),拿到內存中;

既然是Android操作Xml,就用Android所提供的API,不用Java所提供的API,DOM解析,SAX解析了;

@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();
       }
    }

 

執行后的結果: 
這里寫圖片描述

 

 

打開看看: 
這里寫圖片描述

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM