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

更多相关文章

  1. Android 记录gitignore文件内容
  2. 关于Android 混淆的内容总结
  3. android 读取文件内容操作
  4. Android 5.0 API 的变化——开发人员注意
  5. Android Studio 新建编辑条 点击按钮显示控件中的内容
  6. android intent 最大传送内容 1m

随机推荐

  1. Android(安卓)ORM框架 LiteOrm使用
  2. android IBeacon 开发(一)搜索IBeacon基站
  3. android map (地图)
  4. 在Linux中连接android设备
  5. Android(安卓)应用程序之间内容分享详解(
  6. android 获得Android设备唯一标识码 ANDR
  7. Android中的事件分发机制
  8. Android 开发手记之NDK 编程实例
  9. Android 1.5和Android 2.1在相对布局(Rela
  10. Android wps文件下载、预览