SAX解析XML

来源:互联网 发布:mmorpg推荐 知乎 编辑:程序博客网 时间:2024/06/01 09:03
public class SaxTest {


@SuppressWarnings("unchecked")
public static void main(String[] args) throws Exception {
SaxTest s=new SaxTest();
// 1.创建解析工厂
SAXParserFactory factory = SAXParserFactory.newInstance();

// 2.得到解析器
SAXParser sp= factory.newSAXParser();

//3.得到读取器
XMLReader reader = sp.getXMLReader();

//4.设置内容处理器
BeanListHandler handle=s.new BeanListHandler();

reader.setContentHandler(handle);

//5.读取xml文档内容
reader.parse("src/exam.xml");

List<Student> list=handle.getStudents();
System.out.println(list);
}


class BeanListHandler extends DefaultHandler{

private List list = new ArrayList();
private String currentTag;
private Student student;
@Override
public void startElement(String arg0, String arg1, String name,
Attributes arg3) throws SAXException {
currentTag=name;
if("student".equals(currentTag)){
student = new Student();
}
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
if("name".equals(currentTag)){
student.setName(new String(ch,start,length));
}
if("location".equals(currentTag)){
student.setLocation(new String(ch,start,length));
}
if("grade".equals(currentTag)){
student.setGrade(Double.parseDouble(new String(ch,start,length)));
}
}


@Override
public void endElement(String arg0, String arg1, String name)
throws SAXException {
if(name.equals("student")){
list.add(student);
student=null;
}
currentTag=null;  //这一步不能少
}

public List getStudents() {
return list;
}



}
}
0 0
原创粉丝点击