06 xml 解析(sax方式读取)

Paste_Image.png

事件编程模式三要求:

事件源:xml文件
事件:解析到开始标签(包含属性),解析到结束标签,解析文本内容
监听器:DefaultHandler

public class demo02 {

        public static void main(String[] args) throws Exception, SAXException {
            //1)创建SAXParser解析对象
            SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
            
            //2)解析xml文件
            /**
             * 参数一: 需要解析的xml文件
             * 参数二: 指定的DefaultHandler
             */
            //类似于注册监听器
            parser.parse(new File("./src/contact.xml"), new MyDefaultHandler1());
            
        }
}
public class MyDefaultHandler1 extends DefaultHandler{
    
    /**
     * 遇到xml文档的开始位置触发此方法
     */
    @Override
    public void startDocument() throws SAXException {
        System.out.println("开始读取xml文档");
    }

    /**
     * 遇到每个开始标签触发次方法
     * @param qName: 表示当前读到的开始标签名称
     * @param attributes : 属性列表
     */
    @Override
    public void startElement(String uri, String localName, String qName,
            Attributes attributes) throws SAXException {
        System.out.println("开始读取到该标签:"+qName);
    }
    
    /**
     * 遇到每个结束标签时触发此方法
     * @param qName: 当前读到的结束标签名称
     */
    @Override
    public void endElement(String uri, String localName, String qName)
            throws SAXException {
        System.out.println("读到该标签尾:"+qName);
    }
    
    /**
     * 遇到文本内容触发此方法
     * 如何获取当前读到的内容?
     *   char[]: 表示到目前为止读到的文本内容
     *   start: 表示当前内容的起始位置
     *   length: 表示当前内容的长度
     */
    @Override
    public void characters(char[] ch, int start, int length)
            throws SAXException {
        /**
         * char[]内容:标签里的内容
         * start:标签内容起始标签
         * length:标签内容长度
         */               
        //获取当前读到的内容
        String content = new String(ch,start,length);
        System.out.println("读到的标签内容:"+content);
    }
    
    /**
     * 遇到xml文档 的结尾
     */
    @Override
    public void endDocument() throws SAXException {
        System.out.println("整个文档读取完闭");
    }
}
Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容