SAX解析

作者: 菁华浮英梦 | 来源:发表于2018-07-17 22:28 被阅读296次

    一、原理不同:

         DOM解析原理:一次性把xml文档加载进内存,然后在内存中构建Document树。 对内存要求比较要。   

                        缺点: 不适合读取大容量的xml文件,容易导致内存溢出。

         SAX解析原理: 加载一点,读取一点,处理一点。对内存要求比较低。

    二、SAX

              SAX解析工具-Sun公司提供的。内置在jdk中。org.xml.sax.*

    三、核心的API:

         SAXParser类: 用于读取和解析xml文件对象

     parse(File f,DefaultHandler dh)方法: 解析xml文件

                      参数一: File:表示 读取的xml文件。

                      参数二: DefaultHandler: SAX事件处理程序。使用DefaultHandler的子类

    四、应用

         1.创建SAXParser对象 

          SAXParserparser=SAXParserFactory.newInstance().newSAXParser();

        2.调用parse方法

                 parser.parse(newFile("./src/contact.xml"),newMyDefaultHandler());

        3.DefaultHandler类的API:

                      void startDocument()  : 在读到文档开始时调用

                       void endDocument() :在读到文档结束时调用

                      void startElement(String uri, String localName, String qName, Attributes attributes) :读到开始标签时调用                        

                       void endElement(String uri, String localName, String qName)  :读到结束标签时调用

                       void characters(char[] ch, int start, int length) : 读到文本内容时调用

    五、对比

                                                       ============DOM解析    vs   SAX解析============

    DOM解析SAX解析

    原理: 一次性加载xml文档,不适合大容量的文件读取原理: 加载一点,读取一点,处理一点。适合大容量文件的读取

    DOM解析可以任意进行增删改成SAX解析只能读取

    DOM解析任意读取任何位置的数据,甚至往回读SAX解析只能从上往下,按顺序读取,不能往回读

    DOM解析面向对象的编程方法(Node,Element,Attribute),Java开发者编码比较简单。SAX解析基于事件的编程方法。java开发编码相对复杂。

    六、总结

                                1)Dom4j修改xml文档

                                        new XMLWrier();

                                              ......

                                2)xPath技术: 快速查询xml节点

                                              selectNodes()

                                              selectSinglNode();

                                       xpath表达式语言         

                                3)  SAX解析

                                              SAXParser parse

                                                     parser()

                                       DefaultHandler类:

                                                     startElement();

                                                     characters();

                                                     endElement();

    相关文章

      网友评论

          本文标题:SAX解析

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