XML存储,Pull解析

XML是一种可扩展的标记语言,一般用来传输数据及少量数据存储,而非显示数据。

<?xml version="1.0" encoding="UTF-8"?>
<map>
    <name>测试</name>
</map>

在Android中提供XML类来操作XML。

XML写入
    private void writeXml() throws Exception {

        //获取Xml序列化对象
        XmlSerializer xmlSerializer = Xml.newSerializer();
        //绑定输出流
        xmlSerializer.setOutput(openFileOutput("test.xml", MODE_PRIVATE), "UTF-8");

        //开始写入
        xmlSerializer.startDocument("UTF-8", true);

        //根据XML结构写入,开始/结束对应
        xmlSerializer.startTag(null, "Map");
        xmlSerializer.startTag(null, "Name");
        xmlSerializer.text("测试内容");
        xmlSerializer.endTag(null, "Name");
        xmlSerializer.endTag(null, "Map");

        //结束写入,从内容写入磁盘
        xmlSerializer.endDocument();
    }
Pull解析XML
    private void readXml() throws Exception {
        
        //获取XMLPull解析器
        XmlPullParser xmlPullParser = Xml.newPullParser();
        //绑定输入流
        xmlPullParser.setInput(openFileInput("test.xml"), "UTF-8");

           /**
         * Pull解析是基于事件的解析,因此专门定了几个常量表示状态
         * START_DOCUMENT 0
         * END_DOCUMENT 1
         * START_TAG 2
         * END_TAG 3
         * TEXT 4
         */
        int eventType = xmlPullParser.getEventType();
        while (eventType != XmlPullParser.END_DOCUMENT) {
            
            if (eventType == XmlPullParser.START_TAG
                    //xmlPullParser.getName() 获取节点名
                    && xmlPullParser.getName().equals("Name")) {
                
                //xmlPullParser.nextText(); 获取节点内容
                String resValue = xmlPullParser.nextText();
                Log.i("TagInfo", resValue);
                
            }
            
            //不断读取下一条,直到结束
            eventType = xmlPullParser.next();
        }
    }

推荐阅读更多精彩内容