zoukankan      html  css  js  c++  java
  • XML解析方式

    两种解析方式概述

      dom解析

      (1)是W3C组织推荐的处理XML的一种解析方式.

      (2)将整个XML文档使用类似树的结构保存在内存中,在对其进行操作.

      (3)可以方便的对XML进行增删改查的操作

      (4)需要等到XML完全加载进内存才可以进行操作

      (5)耗费内存,当解析超大的XML时慎用

      sax解析

      (1)SAX(Simple API for XML)不是官方表准,但是几乎所有的XML解析器都支持他.

      (2)逐行扫描xml文档,当遇到标签时触发解析处理器,采用事件处理的方式解析xml

      (3)在读取文档的同时即可对xml进行处理,不必等到文档加载结束,相对快捷

      (4)不需要加载进内存,因此不存在占用内存的问题,可以解析超大的XML

      (5)只能用来读取XML中数据,无法进行增删改

      dom解析        

    DOM: Document Object Model 文档对象模型。
            在应用程序中,基于DOM的XML解析器将一个XML文档转换成QQ一个对象模型的集合(通常称DOM树),应用程序通过对这个对象模型的操作,来实现对XML文档数据的操作。
            通过DOM接口,应用程序可以在任何时候访问XML文档中的任何一部分数据,因此,这种利用DOM接口的机制也被称作随机访问机制。
            DOM树所提供的随机访问方式给应用程序的开发带来了很大的灵活性,它可以任意地控制整个XML文档中的内容。
            然而,由于DOM解析器把整个XML文档转化成DOM树放在了内存中,因此,当文档比较大或结构比较复杂时,对内存的需求就比较高。
            而且,对于结构复杂的树的遍历也是一项耗时的操作。
            所以,DOM解析器对机器性能的要求比较高,实现效率不十分理想。
            由于DOM解析器所采用的树结构的思想与XML文档的结构相吻合,同时鉴于随机访问所带来的方便,因此,DOM解析器还是有很广泛的应用价值的。
    总结:使用对象来封装(文档/标签/属性/标签体),使用对象和对象的关联来表示节点之间的关系.
    优点:一次加载,反复使用;非常便捷的每个节点进行CRUD操作
    缺点:占内存,不能解析过大的XML文档  

      sax解析        

    SAX的全称是Simple APIs for XML,也即XML简单应用程序接口。
            与DOM不同,SAX提供的访问模式是一种顺序模式,这是一种快速读写XML数据的方式。
            当使用SAX解析器对XML文档进行分析时,会触发一系列事件,并激活相应的事件处理函数,应用程序通过这些事件处理函数实现对XML文档的访问,因而SAX接口也被称作事件驱动接口。
    总结:采用逐行解析的方式来解析XML文档
    优点:不占内存,多大的文档都能解析,逐行解析,不需要解析所有内容就可以操作,
    缺点:只能进行读取,不能执行更新操作(增删改),每次查询都需要重新解析
    优势:
            (1)然而,由于SAX解析器实现简单,对内存要求比较低,(SAX不必将整个XML文档加载到内存当中,所以它占据内存要比DOM小), 因此实现效率比较高。
            对于大型的XML文档来说,通常会用SAX而不是DOM。
            (2)并且对于那些只需要访问XML文档中的数据而不对文档进行更改的应用程序来说,SAX解析器更为合适。
    局限性:
            (1) SAX解析器在对XML文档进行分析时,触发了一系列的事件,由于事件触发本身是有时序性的,因此,SAX提供的是一种顺序访问机制,对于已经分析过的部分,不能再倒回去重新处理。
            即,一旦经过了某个元素,我们没有办法返回去再去访问它。
            (2)SAX解析器只做了一些简单的工作,大部分工作还要由应用程序自己去做。
            也就是说,SAX解析器在实现时,只是顺序地检查XML文档中的字节流,判断当前字节是XML语法中的哪一部分、是否符合XML语法,然后再触发相应的事件,而事件处理函数本身则要由应用程序自己来实现。
            同DOM解析器相比,SAX解析器缺乏灵活性。
    xml解析开发包
            Jaxp(sun,j2se)、dom4j(dom4j)

  • 相关阅读:
    正则表达式match方法和search方法
    正则表达式(基础篇1)
    动画
    重绘和重排(回流)
    数组常用的10个方法
    css3只需一招,将网站变成灰色的
    Python-类的几种调用方法
    Codeforces Global Round 8 C. Even Picture(构造)
    Codeforces Global Round 8 D. AND, OR and square sum(位运算)
    Codeforces Round #650 (Div. 3) C. Social Distance
  • 原文地址:https://www.cnblogs.com/nanlinghan/p/10040962.html
Copyright © 2011-2022 走看看