SAX读XML文件

import myAndroid.parseData.*;
import java.util.*;
import java.io.*;

import javax.xml.parsers.*;

import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
//XML文件解析类
public class parseXML 
{
public List<Student> getStudents(InputStream inStream) throws ParserConfigurationException, SAXException, IOException
{
SAXParserFactory factory=SAXParserFactory.newInstance();
SAXParser p=factory.newSAXParser();
getHandler hand=new getHandler(); 
p.parse(inStream,hand);
return(hand.getStudents());

}
private final class getHandler extends DefaultHandler
{

private ArrayList<Student> students=null;
public ArrayList<Student> getStudents() {
return students;
}

private String flag=null;
private Student stu;
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
super.characters(ch, start, length);
if(flag!=null)
{
//捕获本节点数据
String data=new String(ch,start,length);
if("name".equals(flag))
{
stu.setName(data);
}
if("sex".equals(flag))
{
stu.setSex(Boolean.parseBoolean(data));
}
if("num".equals(flag))
{
stu.setNum(Integer.parseInt(data));
}
}
}

@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
// TODO Auto-generated method stub
super.endElement(uri, localName, qName);
if("student".equals(localName))
{
students.add(stu);
}
flag=null;

}

@Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
super.startDocument();
students=new ArrayList<Student>();
}

@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
// TODO Auto-generated method stub
super.startElement(uri, localName, qName, attributes);
//判断是否为student标签
if("student".equals(localName))
{
stu=new Student();
stu.setId(Integer.parseInt(attributes.getValue(0)));
}

flag=localName;
}

}

}

posted @ 2011-12-08 17:04  乌托邦.  阅读(216)  评论(0)    收藏  举报