Android学习之使用SAX解析xml文件

来源:未知 责任编辑:责任编辑 发表时间:2014-05-20 18:32 点击:

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)){

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Android 完全退出程序
  • 原创:Android应用开发-Andorid歌词秀,含源码
  • android 屏幕保护
  • Android手机软件汉化教程---第四课 dex文件汉化
  • 众多Android 开源项目推荐,给力工作给力学习
  • Android Audio代码分析4
  • Android得到已安装的应用程序信息!
  • Android开发者指南(29) —— USB Host and Accessory
  • Android成长的幕后推手:工程师鲁宾
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1