美文网首页
安卓xml序列化和xml解析模板

安卓xml序列化和xml解析模板

作者: ldlywt | 来源:发表于2016-09-03 19:42 被阅读186次

    xml解析

    //xml文件的pull解析
     try {
        // 1.通过Xml获取一个XmlPullParser对象
        XmlPullParser parser = Xml.newPullParser();  
        //2.设置解析器的初始化参数
        File file = new File(getFilesDir(), "xxx.xml");
        FileInputStream in = new FileInputStream(file);          
        parser.setInput(inputStream, "utf-8");            
        // 3.获取当前xml行的事件类型
        int eventType = parser.getEventType();
        // 4.判断事件类型是否是文档结束的事件类型
        while (eventType != XmlPullParser.END_DOCUMENT) {
            // 5.如果不是,循环遍历解析每一行的数据。解析一行后,获取下一行的事件类型
            String currentTagName = parser.getName();
            // 判断当前行的事件类型是开始标签还是结束标签
            switch (eventType) {
            case XmlPullParser.START_TAG:   
                // 开始标签的处理
                if ("address".equals(tagName)) {
                    String address = parser.nextText();
                    //编写逻辑
                } else if ("body".equals(tagName)) {
                    String body = parser.nextText();
                    //编写逻辑
                }
                break;
            case XmlPullParser.END_TAG:     
                // 结束标签的处理
                if("sms".equals(parser.getName())){
                    //编写逻辑
                }
                break;
            default:
                break;
            }
            eventType = parser.next();// 获取下一个节点
        }            
    }         
    

    xml序列化

    //xml文件的序列化
    try {
        // 1.得到xml文件的序列化器
        XmlSerializer serializer = Xml.newSerializer();
        // 2.指定序列化器的一些初始参数
        File file = new File(getFilesDir(), "msg.xml");
        FileOutputStream out = new FileOutputStream(file);
        // 3.写xml文件
        serializer.setOutput(out, "utf-8");         // 设置输出流信息
        serializer.startDocument("utf-8", true);    // 设置头信息
        serializer.startTag(null, "root");          // 设置根标签
        
        serializer.startTag(null, "sms");
        serializer.attribute(null, name, value)     // 写标签属性
    
        serializer.startTag(null, "address");       // 开始标签
        serializer.text(address);                   // 写文本标签
        serializer.endTag(null, "address");         // 结束标签
    
        serializer.startTag(null, "body");
        serializer.text(body);
        serializer.endTag(null, "body");
    
        serializer.startTag(null, "type");
        serializer.text(type);
        serializer.endTag(null, "type");
    
        serializer.startTag(null, "date");
        serializer.text(date);
        serializer.endTag(null, "date");
    
        serializer.endTag(null, "sms");
    
        serializer.endTag(null, "root");
        serializer.endDocument();
        out.close();    //关闭输出流
        Toast.makeText(this, "xml序列化成功", 0).show();
        } catch (Exception e) {
            e.printStackTrace();
            Toast.makeText(this, "xml序列化失败", 0).show();
    }

    相关文章

      网友评论

          本文标题:安卓xml序列化和xml解析模板

          本文链接:https://www.haomeiwen.com/subject/pvtlettx.html