【攻克Android (39):XML解析之四】Simple方式解析XML

本文围绕以下三个部分展开:

一、Simple解析

二、四种XML解析器小结

案例一

一、Simple解析

1.Simple是一个Java框架,用于简化序列化和反序列化XML的过程。

使用Simple,开发人员可以简化(名字由此而来)将Java对象(POJO)转换成XML文档的过程—即所谓的序列化(serialization)过程。Simple也可促进相反的过程:开发人员可以将XML文档转换成POJO—即所谓的反序列化(deserialization)过程。

2.Simple使用注解来支持序列化和反序列化过程。根据相应的XML文档应该如何出现,对POJO进行注解。

一些字段被注解为属性,另一些字段被注解为元素。类通常被注解为根元素。

在序列化过程中,该框架处理冗长的解释注解和产生相应XML文档的过程;在XML文档被转换成POJO的反序列化过程中,注解也会被解释。

3.优点:

(1)上手很快

(2)操作简便易懂

(3)基于注解实现,零配置

(4)可以自定义模板XML

(5)支持序列化和反序列化

(6)泛型支持比较好

4.缺点

(1)必须要依赖POJO类

(2)只能生成XML

5.更多,请学习:http://simple.sourceforge.net/home.php

二、四种XML解析器小结

XML解析器可理解为解析XML数据的程序。

1.DOM是一个API,它用于表示文档,并访问和操作组成文档的各种元素。DOM解析XML文档并返回Document类的实例。

2.SAX是一组操作XML的API。它使用一种事件机制,程序员必须对方法进行编码以处理由解析器引发的事件。

3.XMLPullAPI在易用性方面要比SAX方式有所提高;在执行效率方面又要比DOM方式有优势。

4.Simple操作简便易懂,基于注解实现零配置,支持序列化和反序列化。

Pull解析XML(读、写)最重要,必须熟练掌握;Simple解析(读)次重要;SAX、DOM了解即可。

案例一

【攻克Android (39):XML解析之四】Simple方式解析XML

1.将simple-xml-2.6.9.jar文件,拷贝到libs文件夹下,然后编译。

2.创建com.android.pojo包,里面创建Student.java的pojo类,用来封装XML文件中的一条记录。

package com.android.pojo;

import org.simpleframework.xml.Attribute;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.Root;

/**
 * <student id="">
 *   <name></name>
 *   <score></score>
 * </student>
 *
 * Created by Xiangdong on 2015/8/26.
 */

@Root
public class Student {
    @Attribute
    private int id;
    @Element
    private String name;
    @Element
    private int score;

    @Override
    public String toString() {
        return "Student{" +
                "stu_id=" + id +
                ", name='" + name + '\'' +
                ", score=" + score +
                '}';
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }
}

3.在测试包下面创建一个单元测试类:StudentServiceTest,用于进行JUnit单元测试。

package com.android.dataparsing;

import android.os.Environment;
import android.test.InstrumentationTestCase;
import android.util.Log;

import com.android.pojo.Student;

import org.simpleframework.xml.Serializer;
import org.simpleframework.xml.core.Persister;

import java.io.File;

/**
 * Junit 单元测试 -- 要先连接真机/模拟器。
 * 第一步.继承 InstrumentationTestCase 测试案例类
 * 第二步.定义测试方法:方法名必须以 小写的 testXxx 开头
 * 第三步.选中方法名,右击 -> Run -> testXxx()
 * <p/>
 * Created by Xiangdong Lee on 2015/8/26.
 */
public class StudentServiceTest extends InstrumentationTestCase {
    private static final String TAG = "MainActivity";

    public void testSimpleCreateXml() throws Exception{
        Serializer serializer = new Persister();
        Student student = new Student();
        student.setId(9999);
        student.setName("Smith");
        student.setScore(80);

        File dir = Environment.getExternalStorageDirectory();
        File file = new File(dir,"student.xml");
        serializer.write(student, file);
    }
    
    public void testSimpleReadXml() throws Exception{
        Serializer serializer = new Persister();
        File dir = Environment.getExternalStorageDirectory();
        File source = new File(dir,"student.xml");
        Student student = serializer.read(Student.class,source);
        Log.i(TAG, student.toString());
    }
}

这样,即可创建XML文件和读取XML文件。

相关推荐