美文网首页
3.xml中Sax解析实例

3.xml中Sax解析实例

作者: 峰子1994 | 来源:发表于2017-07-29 10:36 被阅读16次
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解析实例

    1.Sax解析原理 2.Sax解析的功能 3.Sax解析xml的步骤 MyDefaultHander 继承 Def...

  • Java EE -> Xml [QR]

    大纲: XML解析 引入 重点DOM解析SAX解析DOM解析 VS SAX解析 xPath技术 引入 xPath作...

  • Java POI 事件模式 读取指定行数

    java poi 事件模式采用SAX解析文档。sax一边扫描一边解析。和dom的一次加载到内存中不同。 所以sax...

  • 2020-12-09:python-sax

    Python中解析xml接口一般有SAX、DOM、ElementTree,SAX是基于事件处理机制,有“解析器”和...

  • Android中的XML解析(一)

    Android中既支持pull解析也支持sax解析,本篇帖子讲android中的pull解析。PULL的解析方式与...

  • 如何进行XML解析

    有以下两种方法: 1、SAX解析 SAX:Simple API for XML .基于事件驱动的解析方式,逐行解析...

  • xml-dom4j解析

    1. sax的解析原理:事件驱动 在javax.xml.parse包里面 SAXparse此类实例可以从SAXPa...

  • 安卓基础篇之SAX解析XML文件

    SAX解析XML文件 基本使用方法 详细源码解析 SAXParserImpl对象的初始化 在使用SAX解析XML文...

  • PYTHON XML解析-SAX解析

    1.SAX模块 SAX是一种基于事件驱动的API,利用SAX解析XML牵扯到两个部分,解析器和事件处理器。其中解析...

  • xml解析中sax解析

    xml解析中的sax解析:1,工作方式:逐步扫描xml文档,当遇到标签时触发解析处理器,通过事件处理的方式来解析x...

网友评论

      本文标题:3.xml中Sax解析实例

      本文链接:https://www.haomeiwen.com/subject/skbqlxtx.html