DOM解析

解析器读入整个文档,然后构建一个主流内存的树结构,然后代码就可以使用dom接口来操作这个树结构。

优点:

  • 整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能。
  • 通过树形结构存取xml文档。
  • 可以随时访问到某个节点的相邻节点。

缺点:

  • 将整个文档调入内存(包括无用的节点),浪费时间和空间。

适用于: 一旦解析了文档还需多次访问这些数据;硬件资源充足(内存,cpu)

DOM解析步骤:

  1. 创建解析器工厂
  2. 获得解析器工厂
  3. 接受一个xml文档作为输入参数名,并得到一个xml的文档对象(Document)
  4. 操作文档对象

SAX解析

SAX是一个解析速度快并且占用内存少的xml解析器,非常适合用于android等移动设备。
SAX解析xml是基于事件流的处理方式的。因此每解析到一个标签,它并不会记录这个标签之前的信息,而我们只会知道当前这个标签的名字和它的属性,至于标签里面的嵌套,上层标签的名字这些都是无法知道的。
Sax的工作原理简单的说,就是对文档进行顺序扫描,扫描到文档(document)开始与结束,扫描到元素(element)开始、结束等地方时调用事件处理处理函数做相应动作,然后继续扫描,直到文档结束。
SAX解析xml最重要的步骤就是定义一个我们自己的Handler处理类,我们可以让其继承 DefaultHandler这个类,然后在里面重写5个回调方法。

  • startDocument
  • startElement
  • characters
  • endElement
  • endDocument

SAX特点:

  • 解析效率高,占用内存少
  • 可以随时停止解析
  • 不能载入整个文档到内存
  • 不能写入xml
  • SAX解析xml文件采用的是事件驱动

SAX解析过程:

  • 继承DefaultHandler ,并实现方法
  • 创建SAX解析器工厂
  • 获得解析器
  • 获得输入流
  • 使用输入流,和实现接口作参数,调用解析器的解析方法进行解析

PULL解析

pull解析器是android内置的解析器,解析原理与sax类似。

pull与sax的不同之处:

  • pull读取xml文件后触发相应的事件调用方法返回的是数字。
  • SAX解析器的工作方式是自动将事件推入注册的事件处理器进行处理,因此你不能控制事件的处理主动结束;而Pull解析器的工作方式为允许你的应用程序代码主动从解析器中获取事件,正因为是主动获取事件,因此可以在满足了需要的条件后不再获取事件,结束解析。

Pull解析步骤:

  1. 创建解析器对象
    XmlPullParser paser = Xml.newPullParser();
  2. 进行解析
    paser.setInput(input,"utf-8");
  3. 产生第一个解析事件
    int eventType = paser.getEventType();
  4. 可以使用循环判断是否继续解析
    while(eventType!=XmlPullParser.END_DOCUMENT){}

解析XML的几种方式:DOM、SAX、PULL的更多相关文章

  1. java解析xml的几种方式

    java解析xml的几种方式 DOM DOM的全称是Document ObjectModel,也即文档对象模型.在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称D ...

  2. JAVA解析XML的四种方式

    java解析xml文件四种方式 1.介绍 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这 ...

  3. 横向对比分析Python解析XML的四种方式

    横向对比分析Python解析XML的四种方式 在最初学习PYTHON的时候,只知道有DOM和SAX两种解析方法,但是其效率都不够理想,由于需要处理的文件数量太大,这两种方式耗时太高无法接受. 在网络搜 ...

  4. 解析XML的几种方法之SAX解析

    假期总结不能停,坚持坚持....接下来总结一下XMl和json的解析和生成.. 解析XML的四种方法,即:DOM.SAX.JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址: DOM:在现 ...

  5. 解析XML的四种方式

    四种操作xml的方式: SAX, DOM, JDOM , DOM4J的比较 1. 介绍 1)DOM(JAXP Crimson解析器)         DOM是用与平台和语言无关的方式表示XML文档的官 ...

  6. JAVA解析xml的五种方式比较

     1)DOM解析 DOM是html和xml的应用程序接口(API),以层次结构(类似于树型)来组织节点和信息片段,映射XML文档的结构,允许获取 和操作文档的任意部分,是W3C的官方标准 [优点] ① ...

  7. java解析xml文件四种方式

    1.介绍 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找 ...

  8. JAVA解析xml的四种方式比较

    1)DOM解析 DOM是html和xml的应用程序接口(API),以层次结构(类似于树型)来组织节点和信息片段,映射XML文档的结构,允许获取 和操作文档的任意部分,是W3C的官方标准 [优点] ①允 ...

  9. php解析xml的几种方式

    php提供几种解析xml的类或方法,包括:Xml parser. SimpleXML,.XMLReader,.DOMDocument. XML Expat Parser: XML Parser使用Ex ...

随机推荐

  1. Zabbix 配置钉钉脚本告警

    1.钉钉账号创建,并创建一个组,在组中添加一个机器人,然后记下webhook地址即可. 2.编辑一个报警脚本,此处使用的是BASH脚本,并覆盖我们的webhook地址到相应的位置. [root@loc ...

  2. oa_mvc_easyui_删除(6)

    1.删除列,添加a标签,绑定参数 <a href="javascript:void(0)" class="delete" ids="@newli ...

  3. C#控制台输入/输出语句

    Console.Read()方法:          从控制台窗口读取一个字符,返回int值 Console.ReadLine()方法:    从控制台窗口读取一行文本,返回string值 Conso ...

  4. 哈希表(Hash table)

  5. python 运算符与流程控制

    运算符与流程控制 运算符 赋值运算 用'='表示,'='的左边只能是变量 算术运算 +.-.*:加.减.乘 /:除法运算,运算结果为浮点数 //:除法运算,运算结果为整数(商) %:求余 **:求幂 ...

  6. 转载Google TPU论文

    选自 Google Drive 作者:Norman P. Jouppi 等 痴笑@矽说 编译 该论文将正式发表于 ISCA 2017 从去年七月起,Google就号称了其面向深度学习的专用集成电路(A ...

  7. python: 基本数据类型 与 内置函数 知识整理

    列表 list.append(val) #末尾追加,直接改变无返回 list.inert(2,val) #插入到指定位置 list.extend(mylist1) #list会被改变 list2=li ...

  8. IIS 程序池优化配置方案

    内容目录 IIS 程序池优化配置方案IIS高并发配置一.IIS站点绑定程序池设置二.支持万级并发请求 IIS 程序池优化配置方案 最近由于系统的客户越来越多,有客户反映访问速度变慢,尤其是api的请求 ...

  9. springboot集成dubbo服务报错No provider available for the service

    检查了下发现是因为没有正确编写暴露服务的注解,需要注意下: @Service(interfaceClass = StudentService.) @Component public class Stu ...

  10. Hdu第八场 树形dp+基环树

    Card Game 每个牌背面的数字朝正面的数字连一条有向边 则题目变为问你最少翻转多少次 能使得每个数字的入度不超过1 首先判断图中每个连通块是不是树或者基环树 因为只有树或者基环树能使得每个点的入 ...