public class Demo{
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException{
//1. 创建解析工厂
SAXParserFactory factory=SAXParserFactory.newInstance();
//2.得到解析器
SAXParser sp=factory.newSAXParser();
//3.得到读取器
XMLReader reader=sp.getXMLReader();
//4.设置内容处理器
BeanListHandler handle=new BeanListHandler();
reader.setContentHandler(handle);
//5.读取xml文档内容
reader.parse("src/exam.xml");
List<Student> list=handle.getStudent();//调用get
System.out.println(list);
}
}
class BeanListHandler extends DefaultHandler{
class BeanListHandler extends DefaultHandler{
private List list=new ArrayList();
private String currentTag;
private Student st;
@Override
public void
startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
currentTag=qName;
if("student".equals(currentTag)){
st=new Student();
}
}
@Override
public void
characters(char[] ch, int start, int length)
throws SAXException {
if("name".equals(currentTag)){
String name=new String(ch,start,length);
st.setName(name);
}
if("location".equals(currentTag)){
//不可currentTag.equals("location")对换,否则会出空指针异常
String location=new String(ch,start,length);
st.setLocation(location);
}
if("grade".equals(currentTag)){
String grade=new String(ch,start,length);
st.setGrade(grade);
}
}
@Override
public void
endElement(String uri, String localName, String qName)
throws SAXException {
if(qName.equals("student")){
list.add(st);
st=null;
}
currentTag=null; //注意此句不可少,否则会出现空指针异常
}
public List getStudent() {
return list;
}
}