SAX解析

作者: 5e1b18effb55 | 来源:发表于2017-07-22 08:34 被阅读0次

    xml文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <书架> 
      <书> 
        <书名>javaweb开发大全</书名>  
        <作者>班长</作者>  
        <售价>99.8元</售价>  
        <简介>这是不错啊</简介> 
      </书>  
      <书> 
        <书名>葵花宝典</书名>  
        <狗>小狗</狗>  
        <作者>岳不群</作者>  
        <售价>99.8两</售价>  
        <简介>欲练此功...</简介> 
      </书> 
    </书架>
    
    
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
    
    import org.xml.sax.Attributes;
    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.DefaultHandler;
    
    public class SAXParserDemo {
    
        public static void main(String[] args) {
            try {
                sax1();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
        /**
         * SAX解析
         * 
         * @throws Exception
         */
    
        public static void sax1() throws Exception {
            // 获取SAX解析器工厂
            SAXParserFactory factory = SAXParserFactory.newInstance();
            // 获取解析器
            SAXParser saxParser = factory.newSAXParser();
            // 解析
            saxParser.parse("src/book2.xml", new MyHandler2());
    
        }
    }
    
    /**
     * 获取 作者 标签内容
     * 
     * @author Administrator
     */
    class MyHandler2 extends DefaultHandler {
    
        private boolean flag = false;
    
        /**
         * 解析到 开始 标签默认调用
         */
        @Override
        public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
            if ("作者".contains(qName)) {
                flag = true;
            }
        }
    
        /**
         * 解析到文本内容自动调用
         */
        @Override
        public void characters(char[] ch, int start, int length) throws SAXException {
            if (flag) {
                String string = new String(ch, start, length);
                System.out.println(string);
            }
        }
    
        /**
         * 解析到 结束 标签默认调用
         */
        @Override
        public void endElement(String uri, String localName, String qName) throws SAXException {
            flag = false;
        }
    
    }
    
    /**
     * 自己的事件处理器
     * 
     * @author Administrator
     *
     */
    class MyHandler extends DefaultHandler {
    
        /**
         * 解析到 开始 标签默认调用
         */
        @Override
        public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
            System.out.println("开始标签:" + qName);
        }
    
        /**
         * 解析到文本内容自动调用
         */
        @Override
        public void characters(char[] ch, int start, int length) throws SAXException {
            String string = new String(ch, start, length);
            System.out.println(string);
        }
    
        /**
         * 解析到 结束 标签默认调用
         */
        @Override
        public void endElement(String uri, String localName, String qName) throws SAXException {
            System.out.println("结束标签:" + qName);
        }
    
    }
    
    

    相关文章

      网友评论

          本文标题:SAX解析

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