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 cn.itcast.domain.Person;
/**
* 采用SAX完成对XML内容的解析
*
*/
public class SAXPersonService {
/**
* 获取人员
* @param xmlStream xml数据
* @return 人员信息
* @throws Exception
*/
public List<Person> getPersons(InputStream xmlStream) throws Exception{
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
PersonHandler handler = new PersonHandler();
parser.parse(xmlStream, handler);
return handler.getPersons();
}
private class PersonHandler extends DefaultHandler{
private List<Person> persons = null;
private String preTag = null;
private Person person = null;
public List<Person> getPersons() {
return persons;
}
@Override
public void startDocument() throws SAXException {
persons = new ArrayList<Person>();
}
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if("person".equals(localName)){
person = new Person();
person.setId(new Integer(attributes.getValue(0)));
}
preTag = localName;
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
if(preTag!=null){
String data = new String(ch, start, length);
if("name".equals(preTag)){
person.setName(data);
}else if("age".equals(preTag)){
person.setAge(new Short(data));
}
}
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
if("person".equals(localName)){
persons.add(person);
person = null;
}
preTag = null;
}
}
}
分享到:
相关推荐
本示例"android sax解析xml模板源码"提供了一个使用SAX解析XML的实例,方便开发者直接导入到自己的项目中使用。 SAX解析XML的基本流程如下: 1. **创建解析器**:在Android中,我们需要使用`SAXParserFactory`来...
下面详细介绍Android中使用SAX解析XML的关键步骤和相关知识点: 1. 引入库:在Android项目中,SAX解析器已经内置于`org.xml.sax`包中,无需额外导入库。 2. 创建事件处理器:你需要创建一个类来实现`...
本篇将详细讲解如何在Android环境中使用SAX解析XML。 1. **SAX解析的基本原理** SAX解析器读取XML文档时,遇到每个元素、属性、文本等都会触发相应的事件,开发者需要注册事件处理器来处理这些事件。这种方式适合...
本文将详细介绍如何在Android中使用SAX解析XML。 首先,理解SAX解析的基本原理。SAX解析器在读取XML文档时,会触发一系列的事件,例如开始文档、结束文档、开始元素、结束元素等。开发者需要创建一个实现了`...
"SAX解析String类型XML字符串"就是一种高效且节省内存的方式去解析XML数据,特别是当XML文件较大时,SAX解析器优于DOM解析器,因为它不需要一次性加载整个XML到内存中。下面我们将深入探讨这一主题。 首先,XML...
以下是一个简单的SAX解析XML文件的Android实例源码: ```java import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class SaxExample extends ...
在Android中使用SAX解析XML,主要涉及以下几个关键步骤: 1. **创建ContentHandler**:ContentHandler是SAX解析的核心,它定义了一系列的回调方法,用于处理XML文档的各种事件。比如`startDocument()`会在解析开始...
以下是使用SAX解析XML的基本步骤: - 创建`DefaultHandler`子类,重写关键方法如`startElement`、`endElement`和`characters`。 - 实例化`SAXParserFactory`,然后获取`SAXParser`。 - 使用`parse`方法解析XML文件...
下面是一个SAX解析XML的示例(有点长,因为详细注解了SAX事件处理的所有方法),SAX API中主要有四种处理事件的接口,它们分别是ContentHandler,DTDHandler, EntityResolver 和 ErrorHandler 。下面的例子可能...
- `xmlSAXPaserDemo`可能是一个包含示例代码的Android项目,用于演示如何实际使用SAX解析XML文件。 - 项目中可能包括网络请求模块、SAX解析器处理类以及展示解析结果的UI部分。 通过以上步骤,开发者可以在...
总结,SAX解析XML在Android开发中是一个实用且高效的解决方案,尤其适用于处理大型XML文件。通过创建自定义的事件处理器,可以灵活地解析和处理XML数据,满足各种业务需求。不过,需要注意的是,由于SAX是基于事件的...
以下是一个使用SAX解析XML文件的基本步骤: 1. **创建解析器**: 首先,我们需要创建一个SAX解析器实例。在Java中,这通常通过`SAXParserFactory`类完成。设置解析器属性,然后调用`newSAXParser()`方法获取`...
SAX解析器为Android开发者提供了一种高效且内存友好的方式来解析XML数据,尤其适用于处理大量或复杂的数据。在`SaxTest`项目中,你可以找到一个具体的示例,演示如何将这些概念整合到实际的Android应用中。
下面我们将详细讨论如何在Android中使用SAX解析XML。 首先,我们需要了解SAX解析的基本原理。SAX解析器在读取XML文档时,会触发一系列的事件,如开始文档、开始元素、结束元素、字符数据等。开发者需要定义一个...
在Android开发中,获取并解析网络上的数据是常见的任务,特别是获取天气预报信息。Google提供了天气API服务...总的来说,SAX解析器提供了一种高效且灵活的方式来处理XML数据,是Android开发中处理网络数据的有力工具。
### Android中使用SAX解析XML 1. **引入库**:在Android项目中,SAX解析器已经内置在`org.xml.sax`包中,无需额外导入库。 2. **创建ContentHandler**:创建一个实现了`org.xml.sax.ContentHandler`接口的类,重写...
本教程将详细讲解如何在Android中使用SAX解析XML。 首先,要使用SAX解析XML,我们需要理解其工作原理。SAX解析器会逐个读取XML文档的元素,每当遇到文档的开始、结束、文本等事件时,就会触发相应的回调方法。...
本篇文章将深入探讨Android环境下如何使用SAX解析XML,并介绍两种不同的解析方式。 ### SAX解析的基本原理 SAX解析器以流式方式读取XML文档,当遇到XML文档的各个元素时,会触发相应的事件回调,例如开始文档、...
首先,让我们了解一下SAX解析XML的基本流程。当SAX解析器读取XML文件时,它会按照文档顺序触发一系列事件,这些事件对应于ContentHandler接口中定义的方法。以下是ContentHandler接口的一些关键方法: 1. `start...
本篇文章将深入探讨三种在Android中解析XML的方法:DOM(文档对象模型)、Pull(拉取解析器)和SAX(简单API for XML),并且会特别强调如何识别文件编码。 首先,DOM解析是将整个XML文件加载到内存中形成一个树形...