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. 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像
  2. android发送json并解析返回json
  3. Android(安卓)常用的SDCARD和内存操作
  4. android 与其他程序交互(一)
  5. android 解析xml字符串
  6. Android(安卓)获取缩略图
  7. Android(安卓)MediaPlayer基本知识
  8. Android获取应用自身相关签名信息
  9. [置顶] android 捕捉异常

随机推荐

  1. 想要改进我的jQuery代码,做我想要的,太丑了
  2. Struts2使用jQuery JSONP解决跨域问题
  3. Ajax/jQuery -在页面加载时将网页内容加
  4. jQuery弹出窗口不能打开。
  5. 将php jsonencode数组结果显示为ajax成功
  6. 【JavaScript】jQuery+ajax传递json数组(
  7. 如何使用XMLHttpRequest向服务器发送数组
  8. jquery validate和jquery form 插件组合
  9. 使用jquery ajax代替iframe
  10. 在没有重新设置源选项的情况下,使用x-edit