解析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 ...
随机推荐
- 计算机网络--TCP三次握手和四次挥手
TCP(传输控制协议) TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议.通过三次握手建立连接,通讯完成时要拆除连 ...
- Keepalived+Nginx+Tomcat 实现高可用Web集群
https://www.jianshu.com/p/bc34f9101c5e Keepalived+Nginx+Tomcat 实现高可用Web集群 0.3912018.01.08 20:28:59字数 ...
- luogu题解 P2212 【浇地Watering the Fields】
题目链接: https://www.luogu.org/problemnew/show/P2212 思路: 一道最小生成树裸题(最近居然变得这么水了),但是因为我太蒻,搞了好久,不过借此加深了对最小生 ...
- React源码深度解析视频 某课网(完整版)
<ignore_js_op> [课程介绍]: React毫无疑问是前端界主流的框架,而框架本身就是热点.课程以讲解React实现原理为主,并在实现过程中讲解这么做的原因,带来 ...
- SSM处理 No 'Access-Control-Allow-Origin' header is present on the requested resource 问题
在开发中,前端同事调用后端同事写好的接口,在地址中是有效的,但在项目的ajax中,浏览器会报 "No 'Access-Control-Allow-Origin' header is pres ...
- python 基于detectron或mask_rcnn的mask遮罩区域进行图片截取
基于示例infer_simple.py 修改165行vis_utils.vis_one_image为vis_utils.vis_one_image_opencv 在detectron.utils.vi ...
- js 格式化 json 字符串
1.JSON.stringify的三个参数 var json = {"@odata.context":"$metadata#AddTableOne_466281s&quo ...
- 自定义zabbix中的普通KEY及LLD KEY
普通类型KEY 1.agent端: 编写自定义脚本,脚本需要有输出值返回给zabbix-server,并且给对应脚本赋予zabbix用户可执行权限 zabbix-agnet 且定义key名称和comm ...
- Linux课程学习 第二课
工欲善其事,必先利其器 虚拟机安装(链接中有详细的操作方法,这里就不再详细说明了,但有注意事项,会在下文中截图标注) https://www.linuxprobe.com/ 注:为了避免是权限问题导 ...
- Nginx实用整理
1. nginx 简述 1.1Nginx是轻量级高并发HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:Nginx可以作为一个HTTP服务器进行网站的发布处理,另外N ...