可扩展标记语言XML是一种数据交换格式,允许用户自己定义,适合Web传输,能提供独立于程序的数据。XML在Android中也有广泛的应用,Android解析XML的方法有很多,本文介绍使用SAX解析XML。
需要解析的infor.XML文件:
class="brush:java;gutter:true;"><?xml version="1.0" encoding="utf-8"?> <infor> <School Name="计算机学院" Code="CS"> <Major Name="计算机应用" Code="CA"> <Class Name="计算机应用10级" Code="CA10"/> <Class Name="计算机应用11级" Code="CA11"/> <Class Name="计算机应用12级" Code="CA12"/> <Class Name="计算机应用13级" Code="CA13"/> </Major> <Major Name="计算机软件" Code="CW"> <Class Name="计算机软件10级" Code="CW10"/> <Class Name="计算机软件11级" Code="CW11"/> <Class Name="计算机软件12级" Code="CW12"/> <Class Name="计算机软件13级" Code="CW13"/> </Major> <Major Name="计算机网络" Code="NW"> <Class Name="计算机网络10级" Code="NW10"/> <Class Name="计算机网络11级" Code="NW11"/> <Class Name="计算机网络12级" Code="NW12"/> <Class Name="计算机网络13级" Code="NW13"/> </Major> </School> <School Name="电子学院" Code="EE"> <Major Name="电子工程" Code="ER"> <Class Name="电子工程10级" Code="ER10"/> <Class Name="电子工程11级" Code="ER11"/> <Class Name="电子工程12级" Code="ER12"/> <Class Name="电子工程13级" Code="ER13"/> </Major> <Major Name="通信工程" Code="CR"> <Class Name="通信工程10级" Code="CR10"/> <Class Name="通信工程11级" Code="CR11"/> <Class Name="通信工程12级" Code="CR12"/> <Class Name="通信工程13级" Code="CR13"/> </Major> </School> <School Name="管理学院" Code="BS"> <Major Name="企业管理" Code="EM"> <Class Name="企业管理10级" Code="EM10"/> <Class Name="企业管理11级" Code="EM11"/> <Class Name="企业管理12级" Code="EM12"/> <Class Name="企业管理13级" Code="EM13"/> </Major> <Major Name="会计" Code="AC"> <Class Name="会计10级" Code="AC10"/> <Class Name="会计11级" Code="AC11"/> <Class Name="会计12级" Code="AC12"/> <Class Name="会计13级" Code="AC13"/> </Major> </School> </infor>
该文件最上层是几个学院,每个学院下面有若干个专业,每个专业下面是若干个班级。需要解析的XML文件一般放在res的raw文件夹下面。
建立4个类:infor.java对应xml文件中的infor节点,school.java对应学院,major.java对应专业,clas.java对应班级。这4个类的包含关系为infor.java>school.java>major.java>clas.java。
infor类包含了一个school列表,可以增加、返回该school列表。
package com.hzhi.my_sax; import java.util.ArrayList; public class infor { public static final String TAG_NAME = "infor"; // 学院列表 public ArrayList<school> schools; // 构造函数 public infor(){ this.schools = new ArrayList<school>(); } // 增加一个学院 public void add_school(school s){ this.schools.add(s); } // 返回学院列表 public ArrayList<school> get_schools(){ return this.schools; } }