美文网首页
Java 5:XML -SAX解析

Java 5:XML -SAX解析

作者: 老柯南 | 来源:发表于2019-03-31 14:45 被阅读0次

    解析XML
    DOM(Java提供) (整个文件加载到内存中去执行解析)
    SAX(Javat提供) 创建一个Handler类逐个节点的访问解析;个人理解因为不是一次性加载到内存,这个不提供修改保存;
    JDOM
    DOM4J

    SAX 解析

    准备工作

            //创建SAXParserFactory
            SAXParserFactory factory = SAXParserFactory.newInstance();
            //创建SAXParser
            SAXParser parser = factory.newSAXParser();
            //创建DefaultHandler
            SaxParserHandler handler = new SaxParserHandler();
            //解析xml
            parser.parse("books.xml", handler);
            //如果需要暴露出解析的结果 需要DefaultHandler中处理并提供返回对象的方法
    
    public class SaxParserHandler extends DefaultHandler {
        @Override
        public void startDocument() throws SAXException {
            super.startDocument();
            System.out.println("开始");
        }
    
        @Override
        public void endDocument() throws SAXException {
            super.endDocument();
            System.out.println("结束");
        }
    
        @Override
        public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
            super.startElement(uri, localName, qName, attributes);
            System.out.println("startElement");
    
            //其中qName是element对应的标签名称 attributes是所有属性
        }
    
        @Override
        public void endElement(String uri, String localName, String qName) throws SAXException {
            super.endElement(uri, localName, qName);
            System.out.println("endElement");
        }
    
        @Override
        public void characters(char[] ch, int start, int length) throws SAXException {
            super.characters(ch, start, length);
    
            //原理是 handler 会记录标签的开始和结束为止 然后可以通过String(ch,start,length)得到内容
            
            //如果需要保存到对象 在characters 中将 characters的值获取到, 保存到全局变量中,再在endElement中更加qName中去保存; 
        }
    }
    
    注意 : characters 中解析value时,也会将#text 解析进去,表现出空格和换行;

    相关文章

      网友评论

          本文标题:Java 5:XML -SAX解析

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