xml解析-jaxp-sax方式

总结一下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,我会在其它博文里介绍。

你可能感兴趣的:(xml)