SAX解析XML文件的步骤:
第一步:通过SAX工厂取得SAX解析器
SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();//取得SAX解析的工厂
SAXParser saxParser = saxParserFactory.newSAXParser();//取得SAX解析器
第二步:调用SAX解析器的方法parse 对xml进行解析
PersonParser personParser = new PersonParser();
saxParser.parse(inStream, personParser); // 当解析到相应的XML文件时就会触发事件personParser对应的回调方法
第三步:实现第二步的personParser对应的回调方法
//继承DefaultHandler 重写触发事件的方法,自己写实现方法
private final class PersonParser extends DefaultHandler{
//当解析到<?xml .....>标签时,该函数会被执行
@Override
public void startDocument() throws SAXException {
persons = new ArrayList<Person>();
}
@Override
/*
* uri 是命名空间的uri
* localName 是不带命名空间的后缀名
* qName 是带命名空间的名字
* attributes 是存放标签的属性值
*/
//当遇到元素结点时,该函数被执行
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
}
//当遇到文本结点时,该函数被执行
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
}
//当遇到元素结点结束时,该函数被执行
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
}