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

[b][size=large]本文围绕以下三个部分展开: [/size][/b]

[b][size=large]一、Simple解析[/size][/b]
[b][size=large]二、四种XML解析器小结[/size][/b]

[b][size=large]案例一[/size][/b]


[b][size=large]一、Simple解析[/size][/b]

[size=medium][b]1.[/b] Simple 是一个 Java 框架,用于简化序列化和反序列化 XML 的过程。[/size]

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


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

[size=medium]一些字段被注解为属性,另一些字段被注解为元素。类通常被注解为根元素。[/size]

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


[size=medium][b]3. 优点:[/b][/size]

[size=medium](1)上手很快[/size]

[size=medium](2)操作简便易懂[/size]

[size=medium](3)基于注解实现,零配置[/size]

[size=medium](4)可以自定义模板XML[/size]

[size=medium](5)支持序列化和反序列化[/size]

[size=medium](6)泛型支持比较好[/size]


[size=medium][b]4. 缺点[/b][/size]

[size=medium](1)必须要依赖POJO类 [/size]

[size=medium](2)只能生成XML[/size]


[size=medium][b]5. 更多,请学习:[url]http://simple.sourceforge.net/home.php[/url][/b][/size]


[b][size=large]二、四种XML解析器小结[/size][/b]

[size=medium]XML解析器可理解为解析XML数据的程序。[/size]

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

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

[size=medium][b]3.[/b]XML Pull API在易用性方面要比SAX方式有所提高;在执行效率方面又要比DOM方式有优势。[/size]

[size=medium][b]4.[/b]Simple操作简便易懂,基于注解实现零配置,支持序列化和反序列化。[/size]

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


[b][size=large]案例一[/size][/b]

[align=center][img]http://dl2.iteye.com/upload/attachment/0111/2135/6cf6c7b6-bd58-373c-893c-a5e8379c00c7.png[/img][/align]

[size=medium][b]1. 将 simple-xml-2.6.9.jar 文件,拷贝到 libs文件夹下,然后编译。[/b][/size]


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

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;
}
}



[size=medium][b]3. 在测试包下面创建一个单元测试类:StudentServiceTest,用于进行JUnit单元测试。[/b][/size]

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());
}
}


[size=medium]这样,即可创建XML文件和读取XML文件。[/size]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值