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

    • SAX解析
    • DOM 解析
    • PULL解析

    SAX解析------- 基于事件的解析器

    原理

      对文档进行顺序扫描,当扫描到 文档的开始与结束元素的开始与结束的位置时,会通知事件处理函数做相应的动作。

    (所谓事件,其实就是一些回调(callback)方法,这些方法(事件)定义在ContentHandler接口。)

    优点

       解析效率高,占用内存少,适合在Android设备上使用

    缺点: 

     1.使用比较麻烦, 需要应用程序自己处理TAG逻辑(维护父、子关系)

     2.单向访问,很难同时访问同一个文档中的不同数据,不支持XPath????

    DOM 解析---------基于文档驱动的解析器

    原理

      加载整个文档并构成DOM树之后开始工作,DOM树在内存中是持久的,所以可以在程序中对数据和结构做更改

    优点

      简单,直观适合xml文件比较小时(因为毕竟是在内存中操作)

    缺点

      需要加载整个XML文档来构造层次结构,消耗资源大,不适用于大文档

    (这个在内存中的文档树将是文档实际大小的几倍。这样做的好处是结构清除、操作方便,而带来的麻烦就是极其耗费系统资源。)

     PULL解析----------同SAX,基于事件的模式------第三方开源

    原理

     不需要像SAX那样监听元素的结束,其实是在开始处就做了大量的处理,PULL解析中需要自己获取产生的事件并作出处理而不是像SAx那样由处理器触发事件。

    当解析到一个文档结束时会自动生成EndDocument事件

    优点

    解析速度快,简单易用,小巧轻便

     

    大神博客:http://blog.csdn.net/ithomer/article/details/7521668

  • 相关阅读:
    字符串匹配——KMP算法(C++)
    数论——Fibonacci数列(C++)
    数据结构——线段树之二(C++)
    数据结构——线段树之一(C++)
    最后的最后
    开始的开始
    10.25模拟 保留道路
    10.25模拟 列车调度
    10.25模拟 三角形
    洛谷 P1093 奖学金
  • 原文地址:https://www.cnblogs.com/fanfusuzi/p/6843134.html
Copyright © 2011-2022 走看看