school类包含了一个major列表,可以增加该列表的元素,以及返回该列表,还实现了Parcelable.Creator接口。

package com.hzhi.my_sax;

import java.util.ArrayList;

import android.os.Parcel;
import android.os.Parcelable; public class school implements Parcelable{ public static final String tag_name = "School"; public String name;
public String code;
public ArrayList<major> majors; public static final Parcelable.Creator<school> CREATOR =
new Parcelable.Creator<school>(){ @Override
public school createFromParcel(Parcel in) {
// TODO Auto-generated method stub
return new school(in);
} @Override
public school[] newArray(int size) {
// TODO Auto-generated method stub
return new school[size];
} }; @Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
} @Override
public void writeToParcel(Parcel arg0, int arg1) {
// TODO Auto-generated method stub } // 实现Parcelable接口
public school(Parcel in){ this.name = in.readString();
this.code = in.readString(); } // 构造函数
public school(String name, String code){ this.name = name;
this.code = code;
this.majors = new ArrayList<major>(); } // 增加专业
public void add_major(major m){ this.majors.add(m); } // 返回专业
public ArrayList<major> get_majors(){
return this.majors;
} // 重写toString
public String toString() {
// TODO Auto-generated method stub
return (getName());
} public String getName() { if(this.name == null) {
return ("(Default)");
} return (this.name); } }

major类包含了一个clas列表,可以增加该列表的元素,以及返回该列表,也实现了Parcelable.Creator接口。

package com.hzhi.my_sax;

import java.util.ArrayList;
import android.os.Parcel;
import android.os.Parcelable; public class major implements Parcelable{ public static final String tag_name = "Major"; public String name;
public String code;
public ArrayList<clas> clases; public static final Parcelable.Creator<major> CREATOR =
new Parcelable.Creator<major>(){ @Override
public major createFromParcel(Parcel in) {
// TODO Auto-generated method stub
return new major(in);
} @Override
public major[] newArray(int size) {
// TODO Auto-generated method stub
return new major[size];
} }; @Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
} @Override
public void writeToParcel(Parcel dest, int flags) { // TODO Auto-generated method stub
dest.writeString(this.name);
dest.writeString(this.code); } // 实现Parcelable接口
public major (Parcel in){ this.name = in.readString();
this.code = in.readString(); } // 构造函数
public major(String name, String code){ this.name = name;
this.code = code;
this.clases = new ArrayList<clas>(); } public String getCode() {
return (this.code);
} public void add_clas(clas c) {
this.clases.add(c);
} public ArrayList<clas> get_clases() {
return this.clases;
} // 重写toString
public String toString() {
// TODO Auto-generated method stub
return (getName());
} public String getName() { if(this.name == null) {
return ("(Default)");
} return (this.name); } }

clas类就不用包含列表了,但还是需要实现Parcelable.Creator接口。

package com.hzhi.my_sax;

import android.os.Parcel;
import android.os.Parcelable; public class clas implements Parcelable { public static final String tag_name = "Class"; public String name;
public String code; public static final Parcelable.Creator<clas> CREATOR =
new Parcelable.Creator<clas>(){ @Override
public clas createFromParcel(Parcel in) {
// TODO Auto-generated method stub
return new clas(in);
} @Override
public clas[] newArray(int size) {
// TODO Auto-generated method stub
return new clas[size];
} }; @Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
} @Override
public void writeToParcel(Parcel dest, int flags) { // TODO Auto-generated method stub
dest.writeString(this.name);
dest.writeString(this.code); } public clas(Parcel in){ this.name = in.readString();
this.code = in.readString(); } public clas (final String name, final String code){ this.name = name;
this.code = code; } // 重写toString
public String toString() {
// TODO Auto-generated method stub
return (getName());
} public String getName() { if(this.name == null) {
return ("(Default)");
} return (this.name); } }

以上4个类中,tag_name是为了和XML文件中的节点名称对比,name和code分别对应XML文件中的name和code。4个类都要重写toString()方法,否则返回的就不是数据内容,而是一长串数字。

Android使用SAX解析XML(2)的更多相关文章

  1. Android之SAX解析XML

    一.SAX解析方法介绍 SAX(Simple API for XML)是一个解析速度快并且占用内存少的XML解析器,非常适合用于Android等移动设备. SAX解析器是一种基于事件的解析器,事件驱动 ...

  2. Android使用SAX解析XML(1)

    可扩展标记语言XML是一种数据交换格式,允许用户自己定义,适合Web传输,能提供独立于程序的数据.XML在Android中也有广泛的应用,Android解析XML的方法有很多,本文介绍使用SAX(Si ...

  3. Android使用SAX解析XML(4)

    util.java文件如下: package com.hzhi.my_sax; import java.io.IOException; import java.io.InputStream; impo ...

  4. Android使用SAX解析xml

    一.理论准备     SAX采用事件驱动机制来解析XML文档,每当SAX解析器发现文档开始.元素开始.文本.元素结束.文档结束等事件时,就会向外发送一次事件,而开发者则可以通过编写事件监听器处理这些事 ...

  5. Android使用SAX解析XML(5)

    parse_handler.java文件: package com.hzhi.my_sax; import org.xml.sax.Attributes; import org.xml.sax.SAX ...

  6. Android使用SAX解析XML(3)

    主界面MainActivity.java: package com.hzhi.my_sax; import java.util.ArrayList; import android.os.Bundle; ...

  7. Android使用SAX解析XML(6)

    应用截图: (1)开始运行时 (2)选择学院 (3)选择专业 (4)选择班级 (5)选择班级的详细信息 本文参考了<Android平台开发之旅>.

  8. Android 使用pull,sax解析xml

    pull解析xml文件 1.获得XmlpullParser类的引用 这里有两种方法 //解析器工厂 XmlPullParserFactory factory=XmlPullParserFactory. ...

  9. Android SAX解析XML

    本篇讲解一下SAX解析XML这种方式,首先来看一下它的基本介绍: SAX是一种以事件驱动的XML API,由它定义的事件流可以指定从解析器传到专门的处理程序的代码的XML结构,简单的讲,它是种解析速度 ...

随机推荐

  1. 程序员DNS知识指南

    本次内容比较hardcore,非科班出身可能会有理解障碍,可以考虑不用挣扎,直接放弃.毕竟普通驾驶员是不需要理解内燃机原理和曲轴如何做功的,所谓术业有专攻也,能看完的不是同行就是真爱~ 引 DNS对于 ...

  2. ehcache2拾遗之copyOnRead,copyOnWrite

    问题描述 缓存在提升应用性能,提高访问效率上都是至关重要的一步.ehcache也是广为使用的缓存之一.但是如果将一个可变的对象(如普通的POJO/List/Map等)存入缓存中,会导致怎样潜在的问题. ...

  3. 去除NSString里面的空格

    NSString *password = @"12  34"; [password stringByTrimmingCharactersInSet:[NSCharacterSet ...

  4. ssh文件传输命令:sz与rz命令

    内容概要: rz 上传文件到linux服务器,会出现选择框 sz filename 下载linux文件到windows 一般来说,linux服务器大多是通过ssh客户端来进行远程的登陆和管理的,使用s ...

  5. CI Weekly #1 | 这份周刊,带你了解 CI/CD 、DevOps、自动化测试

    原文首次发布与 flow.ci Blog >> 链接,转载请联系:) 准备了很久,CI Weekly 第一期终于来了. CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分 ...

  6. Spring Cloud 配置服务

    Spring Cloud 配置服务 1. 配置服务简介 产生背景: 传统开发中,我们通常是将系统的业务无关配置(数据库,缓存服务器)在properties中配置,在这个文件中不会经常改变,但随着系统规 ...

  7. KnockoutJS 3.X API 第四章 表单绑定(11) options绑定

    目的 options绑定主要用于下拉列表中(即<select>元素)或多选列表(例如,<select size='6'>).此绑定不能与除<select>元素之外的 ...

  8. KnockoutJS 3.X API 第五章 高级应用(1) 创建自定义绑定

    您不仅限于使用内置的绑定,如click,value绑定等,您可以创建自己的绑定. 这是如何控制视图模型如何与DOM元素进行交互,并且为您提供了大量的灵活性,以便于以复用的方式封装复杂的行为. 注册绑定 ...

  9. OpenCascade Modeling Algorithms Fillets and Chamfers

    Modeling Algorithms Fillets and Chamfers 造型算法——倒圆与倒角 eryar@163.com 一.倒圆Fillet Constructor 1. BRepFil ...

  10. java.util.Scanner简单应用

    import java.util.Scanner; import java.io.*; public class FileScannerTest{ public static void main(St ...