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);
        }
    }
  • 相关阅读:
    html的URL参数传值问题
    html背景图片拉伸至全屏
    Laravel 用户验证Auth::attempt fail的问题
    HTML中meta的应用
    ubuntu升级php版本
    Laravel 目录结构分析
    css颜色渐变在不同浏览器的设置
    谷歌浏览器(Chrome)离线包的下载方法!
    RAD Studio 10 up1欢迎页证书不可用
    MySQL
  • 原文地址:https://www.cnblogs.com/huey/p/5515146.html
Copyright © 2011-2022 走看看