3.xml中Sax解析实例

1.Sax解析原理
SAX解析: 优势:内存占用非常小。加载一点,解析一点,处理一点,接着释放内存。
2.Sax解析的功能
SAXParser类: 解析器对象(类似于dom4j SAXReader)
        |- parse(File f, DefaultHandler dh): 方法。用于解析xml文件

    File: 指定读取的xml文件

    DefaultHandler: 事件处理程序的默认基类。

    DefaultHandler类:

 startDocument() : 开始文档时触发的方法
 startElement(String uri, String localName, String qName, Attributes attributes) 遇到开始标签触发的方法
 characters(char[] ch, int start, int length)  遇到文本内容触发的方法
 endElement(String uri, String localName, String qName)  遇到结束标签
 endDocument() 结束文档时触发的方法
3.Sax解析xml的步骤
public static void main(String[] args) throws  Exception {
//基于SAX解析读取xml文件
//创建解析的对象
SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
 //2.调用parse方法,读取和解析xml文件
 /**
     * 参数一: 指定的文件地址
 */
File file = new File("contact.xml");
/**
   * 参数二: 指定DefaultHandler的子类
*/
saxParser.parse(file,new MyDefaultHander());
    }

MyDefaultHander 继承 DefaultHandler

public class MyDefaultHander extends DefaultHandler {

    //遇到文档就开始解析

    @Override
    public void startDocument() throws SAXException {

        System.out.println("MyDefaultHandler.startDocument()");
    }
    //遇到开始标签
    /*
      qName  当前遇到的标签名称
    */

    @Override
    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {

        System.out.println("MyDefaultHandler.startElement()"+qName);
    }

    /**
     * 遇到文本内容(包括空格换行)
     * @param ch : 表示整个xml文档所有文本内容
     * @param start: 表示当前读到的文本内容的开始位置
     * @param length: 表示当前读到的文本内容的长度
     */

    @Override
    public void characters(char[] ch, int start, int length) throws SAXException {

        String  content = new String(ch,start,length);

        System.out.println("MyDefaultHandler.characters()-->"+content);
    }
    /**
     * 遇到结束标签
     * @param qName: 表示当前读取的结束标签名称
     */
    @Override
    public void endElement(String uri, String localName, String qName) throws SAXException {

        System.out.println("MyDefaultHandler.endElement()-->"+qName);
    }
    /**
     * 遇到结束文档时
     */

    @Override
    public void endDocument() throws SAXException {

        System.out.println("MyDefaultHandler.endDocument");
    }
}

你可能感兴趣的:(3.xml中Sax解析实例)