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;
}
}
}
浙公网安备 33010602011771号