总结一下xml文件解析的另一种方式-sax方式,先看一下解析的步骤:
1、创建解析器工厂
2、创建解析器
3、执行parse方法
4、创建一个类,继承DefaultHandler
5、重写三个方法
一、新建一个待解析的xml文件
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<person>
<per>
<age>22</age>
<sex>man</sex>
</per>
<per>
<age>22</age>
<sex>nv</sex>
</per>
<per>
<age>22</age>
<sex>man</sex>
</per>
</person>
二、新建java文件
public class SaxXml {
public static void main(String[] args) throws Exception {
/*
* 1、创建解析器工厂
* 2、创建解析器
* 3、执行parse方法
* 4、创建一个类,继承DefaultHandler
* 5、重写三个方法
*/
long time = System.currentTimeMillis();
//创建解析器工厂
SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
//创建解析器
SAXParser saxParser = saxParserFactory.newSAXParser();
}
}
三、新建一个类继承DefaultHandler类,并重写它的三个方法
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
/*
* 读取整个文件
*/
public class MyDefaultHandler extends DefaultHandler{
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
System.out.print("<"+qName+">");
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
System.out.print(new String(ch,start,length));
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
System.out.print("</"+qName+">");
}
}
这个类里面的三个方法的作用很好理解,就是一个标签一个标签的读取xml文件,有一个判断开始标签和结束标签的方法,另一个方法是执行操作的。
四、执行parse方法
saxParser.parse("src/sax/person.xml", new MyDefaultHandler());
这种解析xml文件的方法虽然在大文件下能节省内存,但是操作起来相当麻烦,每一个功能都需要写一个类并且重写其中的三个方法,所这中解析方式不常用,常用的有dom4j和jdom,我会在其它博文里介绍。