【攻克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了解即可。
案例一

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文件。