06 xml 解析(sax方式读取)

06 xml 解析(sax方式读取)_第1张图片
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("整个文档读取完闭");
    }
}
06 xml 解析(sax方式读取)_第2张图片
Paste_Image.png

你可能感兴趣的:(06 xml 解析(sax方式读取))