`
XiangdongLee
  • 浏览: 86967 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

【攻克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.XML Pull API在易用性方面要比SAX方式有所提高;在执行效率方面又要比DOM方式有优势。

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

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



案例一



        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文件。
0
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics