SAX解析实例

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{
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;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值