【攻克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文件。