Android学习之使用SAX解析xml文件
	Android上经常使用xml来传递和交换数据。SAX(Simple API for XML)作为一种解析速度快并且占用内存少的xml解析器,非常适合Android等移动设备。SAX解析采用事件驱动,会判断当前读取到的字符是否符合xml语法中的某部分,从而触发相应事件。xml中的节点分为2种类型,分别是Element Node(元素节点)和Text Node(文本节点)。对于元素节点,当读取到开始标签时会触发startElement事件,当读取到结束标签时会触发endElement事件。对于文本节点,当读取到文本时会触发characters事件。另外,xml文档开始和结束时会分别触发startDocument和endDocument事件。所谓事件其实就是一些回调方法,这些方法定义在ContentHandler接口中,用SAX解析一个xml文件主要也就是要根据xml文件的节点等信息编写一个实现ContentHandler接口的实现类。
	 
	以下会用SAX解析这个test.xml文件,并用AndroidTextCase测试结果是否正确。
	text.xml文件内容如下:
	<?xml version="1.0" encoding="UTF-8"?>
	<persons>
	<person id="23">
	<name>liming</name>
	<age>30</age>
	</person>
	<person id="20">
	<name>lixiang</name>
	<age>25</age>
	</person>
	</persons>
	过程如下:
	在Eclipse下新建一个Android项目xml01
	新建text.xml文件,放在src目录下面
	新建一个JavaBean:Person,属性有id、name、age
	编写一个业务类:SAXPersonService,解析test.xml文件,这里重点是根据test.xml文件中的节点名称等信息编写SAXParserHandler这个内部类,代码如下:
	package com.study.service;
	import java.io.InputStream;
	import java.util.ArrayList;
	import java.util.List;
	import javax.xml.parsers.SAXParser;
	import javax.xml.parsers.SAXParserFactory;
	import org.xml.sax.Attributes;
	import org.xml.sax.SAXException;
	import org.xml.sax.helpers.DefaultHandler;
	import com.study.bean.Person;
	/**
	 * 使用SAX解析text.xml文件
	 * @author Administrator
	 *
	 */
	public class SAXPersonService {
	 public List<Person> getPersons(InputStream inputStream) throws Throwable{
	  SAXParserFactory factory = SAXParserFactory.newInstance();
	  SAXParser parser = factory.newSAXParser();
	  SAXParserHandler handler = new SAXParserHandler();
	  parser.parse(inputStream, handler);
	  return handler.getPersons();
	 }
	 
	 private final class SAXParserHandler extends DefaultHandler{
	 
	  private List<Person> persons;
	  // 记录正在访问的文本节点的前一个节点名称
	  private String tag;
	  private Person person;
	 
	  public List<Person> getPersons() {
	   return persons;
	  }
	  @Override
	  public void characters(char[] ch, int start, int length)
	    throws SAXException {
	   if(tag != null){
	    if("name".equals(tag)){
	
相关新闻>>
- 发表评论
 - 
				
 
- 最新评论 进入详细评论页>>
 





