Android使用SAX解析XML(1)

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

需要解析的infor.XML文件:

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

}
原文地址:https://www.cnblogs.com/mstk/p/3478287.html