解析XML的几种方式:DOM、SAX、PULL
DOM解析
解析器读入整个文档,然后构建一个主流内存的树结构,然后代码就可以使用dom接口来操作这个树结构。
优点:
- 整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能。
- 通过树形结构存取xml文档。
- 可以随时访问到某个节点的相邻节点。
缺点:
- 将整个文档调入内存(包括无用的节点),浪费时间和空间。
适用于: 一旦解析了文档还需多次访问这些数据;硬件资源充足(内存,cpu)
DOM解析步骤:
- 创建解析器工厂
- 获得解析器工厂
- 接受一个xml文档作为输入参数名,并得到一个xml的文档对象(Document)
- 操作文档对象
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解析步骤:
- 创建解析器对象
XmlPullParser paser = Xml.newPullParser(); - 进行解析
paser.setInput(input,"utf-8"); - 产生第一个解析事件
int eventType = paser.getEventType(); - 可以使用循环判断是否继续解析
while(eventType!=XmlPullParser.END_DOCUMENT){}
解析XML的几种方式:DOM、SAX、PULL的更多相关文章
- java解析xml的几种方式
java解析xml的几种方式 DOM DOM的全称是Document ObjectModel,也即文档对象模型.在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称D ...
- JAVA解析XML的四种方式
java解析xml文件四种方式 1.介绍 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这 ...
- 横向对比分析Python解析XML的四种方式
横向对比分析Python解析XML的四种方式 在最初学习PYTHON的时候,只知道有DOM和SAX两种解析方法,但是其效率都不够理想,由于需要处理的文件数量太大,这两种方式耗时太高无法接受. 在网络搜 ...
- 解析XML的几种方法之SAX解析
假期总结不能停,坚持坚持....接下来总结一下XMl和json的解析和生成.. 解析XML的四种方法,即:DOM.SAX.JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址: DOM:在现 ...
- 解析XML的四种方式
四种操作xml的方式: SAX, DOM, JDOM , DOM4J的比较 1. 介绍 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官 ...
- JAVA解析xml的五种方式比较
1)DOM解析 DOM是html和xml的应用程序接口(API),以层次结构(类似于树型)来组织节点和信息片段,映射XML文档的结构,允许获取 和操作文档的任意部分,是W3C的官方标准 [优点] ① ...
- java解析xml文件四种方式
1.介绍 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找 ...
- JAVA解析xml的四种方式比较
1)DOM解析 DOM是html和xml的应用程序接口(API),以层次结构(类似于树型)来组织节点和信息片段,映射XML文档的结构,允许获取 和操作文档的任意部分,是W3C的官方标准 [优点] ①允 ...
- php解析xml的几种方式
php提供几种解析xml的类或方法,包括:Xml parser. SimpleXML,.XMLReader,.DOMDocument. XML Expat Parser: XML Parser使用Ex ...
随机推荐
- server001
- JS基础_js编写位置
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- vue中v-if和v-for优先级
v-for和v-if不应该一起使用,必要情况下应该替换成computed属性.原因:v-for比v-if优先,如果每一次都需要遍历整个数组,将会影响速度,尤其是当之需要渲染很小一部分的时候. 错误 ...
- 大神的JS代码风格指南
js代码风格指南:1.缩进使用空格,不要用制表符2.必须用分号3.暂时不用ES6(modules)例如export和import命令4.不鼓励(不禁止)水平对齐5.少用var 都应该使用const或者 ...
- chrome79开发者工具代码高亮失效的解决办法
升级chrome最新版本后,存在开发者工具Sources内代码高亮失效的情况 解决办法: 1. 开发者工具面板右上角菜单->Setting->Preferences 2. 将Theme切换 ...
- scala下划线的作用
https://stackoverflow.com/questions/8000903/what-are-all-the-uses-of-an-underscore-in-scala Existent ...
- Nginx,LVS,HAProxy详解
Nginx/LVS/HAProxy负载均衡软件的优缺点详解 PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验 ...
- 2.(基础)tornado的请求与响应
之前我们介绍了tornado 的基础流程,但是还遗留了一些问题,今天我们就来解决这些遗留问题并学习新的内容 settings,使用tornado.web.Application(handler, ** ...
- deep_learning_Function_rnn_cell.BasicLSTMCell
tf.nn.rnn_cell.BasicLSTMCell(n_hidden, forget_bias=1.0, state_is_tuple=True): n_hidden表示神经元的个数,forge ...
- 清北学堂dp图论营游记day3
.状态压缩dp: 对于这个我们引入二进制状态压缩,因为任何一个数都可以二进制表示,而其二进制表示上每一位都可以表示当前位置是否有元素,这就构成了状态压缩. 对于这个题,上下行&一下就行. 状压 ...