解析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 ...
随机推荐
- GoAccess操作手册
名字 GoAccess - 可视化 Web 日志分析工具. 语法 goaccess [filename] [ options ... ] [-c][-M][-H][-q][-d][...] 描述 Go ...
- JS基础_强制类型转换-Boolean
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- RAD Studio 10 up1欢迎页证书不可用
不只是欢迎页,每打开一个新的工程,都会出现上面那个证书不可用的提示. 解决方法: 1.通过Fiddler网络监控软件分析发现,出现这个问题的原因是bds启动的时候会用https协议访问谷歌的统计服务器 ...
- Linux上安装postgres 10.5
由于接触了华为的elk大数据平台,里面封装的是postgres ,就想着安装一下,熟悉一下postgres数据. 安装包下载:https://www.postgresql.org/ftp/source ...
- PAT Basic 1012 数字分类 (20 分)
给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字: A1 = 能被 5 整除的数字中所有偶数的和: A2 = 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n ...
- 使用nodejs开发一个markdown文档管理小系统(一)Using Nodejs to quickly develop a markdown management system
好多年没碰过前端jquery了,用一两天时间重温一下,刚好写个小工具, 不递归取文件夹和文件,只写一层,保持足够简单,验证和参数判断暂不写,毕竟只写了几个小时而已,功能算完备了,添加一个简单的管理员权 ...
- 设计数据结构之LRU缓存
leetcode 146. LRU Cache class LRUCache { private: struct Node { int key; int val; Node* prev; Node* ...
- 采用线性回归方法降低双目测距到平面的误差(sklearn)
继上篇,为了改善标定板的深度信息: remove_idx1 = np.where(Z <= 0) remove_idx2 = np.where(Z > 500)#将Z轴坐标限定在0-500 ...
- k8spod控制器概述
自主式pod对象由调度器绑定至目标工作节点后即由相应节点上的kubelet负责监控其容器的存活性,容器主进程崩溃后,kubelet能够自动重启相应的容器.不过,kubelet对非主进程崩溃类的容器错误 ...
- linux完整卸载mysql数据库
由于本机测试环境数据库装错了,需要卸载数据库,记录一下 yum -y remove mysql find / -name mysql /etc/selinux/targeted/active/modu ...