`
XiangdongLee
  • 浏览: 91199 次
  • 性别: 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
分享到:
评论

相关推荐

    搞懂XML,看清SOAP,攻克BizTalk

    SOAP(简单对象访问协议,Simple Object Access Protocol)是基于XML的网络协议,主要用于在Web上交换结构化的和类型化的信息。SOAP消息通常封装在HTTP协议中,确保了跨平台的兼容性和安全性。SOAP消息由三部分组成...

    攻克Data动态获取网页评论,保存数据库

    【攻克Data动态获取网页评论,保存数据库】是一个关于利用特定工具——攻克Data,来抓取网页上的评论数据并存储到数据库的过程。这个过程涉及到网络爬虫技术、JSON解析以及数据库管理等多个IT领域的知识点。 1. **...

    2021届江西省九江市高三三模数学(理)试题解析.zip

    10. 后续复习规划:根据解析内容,考生可以针对性地调整复习计划,重点攻克薄弱环节,提高备考效率。 总结,这份“2021届江西省九江市高三三模数学(理)试题解析”对于高三学生来说是一份宝贵的参考资料,它不仅可以...

    40天攻克大学英语四级

    本文将重点解析“40天攻克大学英语四级”中的核心知识点,尤其是关于作文和翻译部分的倒装句技巧。 倒装句是英语写作中的一种高级表达方式,它能够使句子更具表现力,提升文章的层次感。倒装句分为完全倒装和部分倒...

    2021版高考化学一轮复习热点突破微课10利用电池工作原理攻克新型电池练习含解析鲁科版

    本文主要涉及的是化学领域的知识,特别是与电池工作原理相关的知识点,包括原电池的基本概念、电极反应、离子迁移方向以及电池应用在高考...通过具体的例题和解析,学生可以更直观地理解这些抽象概念,并提升解题能力。

    Android程序技术:开拓创新.pptx

    Android 程序技术 本节课程内容:开拓创新 开拓创新 开拓创新 Blaze new trails in a pioneering spirit 开拓创新 Blaze new trails in a pioneering spirit 创新区别于发明 发明是从无到有,而创新是除旧创新。从...

    考研英语难句、长句解析

    考研英语长句、难句解析。。。。。 一、课程简介: 1、考研的两个难点:词汇和长难句 2、攻克长难句对于考研的意义:完型、阅读、新题型、翻译 3、如何攻克长难句:剖析其结构、总结其特征、推敲其译文 4、阅读和...

    红宝书考研真题系统解析

    红宝书通过图解与文字解析相结合的方式,深入分析长难句的结构特点与词汇难点。尤其针对英译汉部分的长难句,书中有详尽的句子结构解析、翻译策略指导和词汇深度解读,帮助考生攻克这一难题,提高理解与翻译能力。 ...

    2020_2021学年高考语文一轮复习专项对点练4增强层次意识攻克图表信息转述题含解析新人教版

    2020_2021学年高考语文一轮复习专项对点练4增强层次意识攻克图表信息转述题含解析新人教版

    acm国际大学生程序设计竞赛试题与解析

    《ACM国际大学生程序设计竞赛试题与解析》是面向热衷于ACM竞赛的大学生们的一份宝贵资源。ACM,全称为国际计算机学会(Association for Computing Machinery),主办的国际大学生程序设计竞赛(ICPC)是一项全球性的...

    Android自动来电录音

    在Android平台上实现自动来电录音是一项技术挑战,但并非无法攻克。Android系统提供了丰富的API和工具,使得开发者可以创建各种功能丰富的应用,包括来电录音。在本文中,我们将深入探讨如何利用Android的...

    24学时攻克c++

    根据提供的信息,“24学时攻克C++”这本书旨在通过一系列高效的学习计划帮助读者在较短的时间内掌握C++编程语言。尽管仅上传了23页的内容,我们仍然可以从书名、描述以及部分可见的内容中推断出一些关键知识点。 ##...

    考研资料,数二英二历年真题大全(1987-2020)及解析

    【考研资料,数二英二历年真题大全(1987-2020)及解析】 在准备考研的过程中,历年真题是至关重要的学习资源。这份压缩包包含的是数学二(数二)和英语二(英二)从1987年至2020年的全部真题及其解析,对于考生来...

    Android开心词场app

    - **开发平台**:Android Studio作为主要的开发工具,它是Google官方推出的集成开发环境(IDE),支持Java和Kotlin两种语言。 - **开发语言**:主要使用Java语言进行编程,因其在Android开发中的成熟性和广泛支持。 - ...

    全方位深入解析最新版SpringBoot源码.txt

    第1章 死磕源码,剑指荣耀【用源码武装你的竞争力】首先点明SB框架的“江湖地位”,学源码三大优势:团队核心、通关...系统***章节总结4-8 ***应用案例一4-9 ***应用案例二第5章 bean解析【一举攻克框架之魂】........

    【精品】2017小升初数学全真模拟卷10(原卷+解析).zip

    该压缩包文件“【精品】2017小升初数学全真模拟卷10(原卷+解析).zip”是专为2017年小学毕业生准备的一套全面的数学模拟考试资源,旨在帮助孩子们在升学考试前进行有效的复习和测试。这套模拟卷包含了完整的原卷...

    藏经阁-攻克痛点:如何保证复杂微服务架构下的数据一致性.pdf

    微服务架构下的数据一致性是分布式系统中最重要的挑战之一。随着微服务架构的日益普及,数据的一致性和可靠性变得更加重要。 Seata 是一个开源的分布式事务管理框架,旨在解决微服务架构下的数据一致性问题。 Seata...

    迈向2035:攻克数字经济下的人才战.pdf

    3. **加强企业社会责任感**:通过参与公益活动等方式提升企业的社会形象,吸引更多有着相同价值观的年轻人才。 4. **优化沟通渠道**:利用社交媒体等平台加强与员工之间的互动,创造更加开放和谐的工作氛围。 总之...

Global site tag (gtag.js) - Google Analytics