Java 5:XML -SAX解析

解析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 解析进去,表现出空格和换行;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,148评论 1 32
  • 一. Java基础部分.................................................
    wy_sure阅读 3,839评论 0 11
  • xml经典总结 XML(eXtensible Markup Language)是万维网联盟(World Wide ...
    java日记阅读 1,001评论 0 2
  • 小时候我很自卑,我就是自已家的孩子。父母总拿我和别人家的孩子作比较,你看,人家孩子多活泼、多大方;你看看你,跟个小...
    小鸦说事阅读 328评论 0 2
  • 风雨中卖甑糕的老头儿。 当县医院搬离东大街之后,曾经热闹的云棋路早点就只剩下卖甑糕的老头了。 老头独自坐在车旁,一...
    绵心浪人羽翼同飞阅读 155评论 0 0