zoukankan      html  css  js  c++  java
  • SAX

    SAX 是一种事件驱动的 XML 数据处理模型。对于 DOM 模型,解析 XML 文档时,需要将所有内容载入内容。相比 DOM 模型,SAX 模型更为高效,它一边扫描一边解析 XML 文档。但与 DOM 模型相比,SAX 的操作更为复杂。

    简单示例:

    package com.huey.hello.sax;
    
    import java.io.InputStream;
    import java.io.StringWriter;
    
    import org.xml.sax.Attributes;
    import org.xml.sax.InputSource;
    import org.xml.sax.SAXException;
    import org.xml.sax.XMLReader;
    import org.xml.sax.helpers.DefaultHandler;
    import org.xml.sax.helpers.XMLReaderFactory;
    
    public class MySAXApp extends DefaultHandler {
        
        private StringWriter writer;
    
        public MySAXApp() {
            super();
        }
    
        public static void main(String args[]) throws Exception {
            XMLReader xr = XMLReaderFactory.createXMLReader();
            MySAXApp handler = new MySAXApp();
            xr.setContentHandler(handler);
            xr.setErrorHandler(handler);
            
            InputStream inStream = MySAXApp.class.getResourceAsStream("/files/hello.xml");
            InputSource inSource = new InputSource(inStream);
            xr.parse(inSource);
        }
        
        @Override
        public void startDocument() throws SAXException {
            writer = new StringWriter();
        }
        
        @Override
        public void endDocument() throws SAXException {
            System.out.println(writer.toString());
        }
        
        @Override
        public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {        
            writer.append('<').append(qName);
            for (int i = 0; i < attributes.getLength(); i++) {
                writer.append(' ')
                    .append(attributes.getLocalName(i))
                    .append('=').append('"')
                    .append(attributes.getValue(i))
                    .append('"');
            }
            writer.append('>');
        }    
        
        @Override
        public void endElement(String uri, String localName, String qName) throws SAXException {        
            writer.append("</").append(qName).append('>');        
        }
        
        @Override
        public void characters(char[] ch, int start, int length) throws SAXException {
            String text = new String(ch, start, length);
            writer.append(text);
        }
    }
  • 相关阅读:
    SQLAlchemy技术文档(中文版)(全)
    Python 学习 第17篇:sqlalchemy 读写SQL Server数据库
    环境:Pycharm2019.1 + Win10 + Python3.7.3
    PyInstaller打包python脚本的一些心得
    Python GUI之tkinter窗口视窗教程大集合(看这篇就够了)
    简单使用xlwt
    python xlwt写入excel操作
    Python中xlrd模块解析
    python使用pip离线安装库
    pip的基本使用和离线安装Python第三方库
  • 原文地址:https://www.cnblogs.com/huey/p/5515146.html
Copyright © 2011-2022 走看看