xml文件解析的几种方式(一)
常见的几种解析xml文件的方式
XML的解析方式有很多,光开源的就有十多种:如Xerces、JDOM、DOM4J、XOM、JiBX、KXML、XMLBeans、jConfig、XStream、XJR等。
但是最常用的还是sax,dom,pull,dom4j
而android中用的比较多的是 sax(Simple APIs for XML)、dom(Document Object Model)、pull,其中pull在这三个中又最为适用。(大部分用于java的解析器在android上都可以用,对于有人说dom4j最好,这个没试验过,暂时不好说,但是大部分人都说pull好)
SAX解析
全称:simple apis for xml ,sax提供的访问模式是一种顺序模式,使用sax解析xml文件时候,会触发一系列事件,调用对应的函数,访问xml,sax接口也称为事件驱动接口
优点: 采用事件驱动模式,对内存耗费较小,适用只处理xml文件中的数据
缺点:很难同时访问xml文件中的多处不同数据
DOM解析
dom是一种文档对象模型;
优点:dom可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构,dom技术使得用户页面可以动态的变化,如动态显示隐藏一个元素,改变它的属性,增加一个元素等,dom可以使页面的交互性大大增强。
缺点:dom解析xml文件会将xml文件的所有内容放在内存中
PULL解析
pull和sax很相似,区别在于:pull读取xml文件后触发相应的事件调用方法返回的是数字,且pull可以在程序中控制,想解析到哪里就可以停止解析。 (SAX解析器的工作方式是自动将事件推入事件处理器进行处理,因此你不能控制事件的处理主动结束;而Pull解析器的工作方式为允许你的应用程序代码主动从解析器中获取事件,正因为是主动获取事件,因此可以在满足了需要的条件后不再获取事件,结束解析。pull是一个while循环,随时可以跳出,而sax不是,sax是只要解析了,就必须解析完成。)
选择sax解析还是dom解析
dom解析要求将整个文档全部加载玩,才能执行操作,而且必须存放到内存中,这样可能会内存溢出,之后可以修改文档的结构
而sax解析,不用一次性将文件全部加载完,在找到指定的tag可以停止解析,在处理大型文档时候较好用,而且对内存要求不高
其他的解析方式:
1)DOM4J性能最好,连Sun的JAXM也在用DOM4J.目前许多开源项目中大量采用DOM4J,例如大名鼎鼎的Hibernate也用DOM4J来读取XML配置文件。如果不考虑可移植性,那就采用DOM4J.
2)JDOM和DOM在性能测试时表现不佳,在测试10M文档时内存溢出。在小文档情况下还值得考虑使用DOM和JDOM.虽然JDOM的开发者已经说明他们期望在正式发行版前专注性能问题,但是从性能观点来看,它确实没有值得推荐之处。另外,DOM仍是一个非常好的选择。DOM实现广泛应用于多种编程语言。它还是许多其它与XML相关的标准的基础,因为它正式获得W3C推荐(与基于非标准的Java模型相对),所以在某些类型的项目中可能也需要它(如在JavaScript中使用DOM)。
3)SAX表现较好,这要依赖于它特定的解析方式-事件驱动。一个SAX检测即将到来的XML流,但并没有载入到内存(当然当XML流被读入时,会有部分文档暂时隐藏在内存中)。
xml文件解析的几种方式(一)相关推荐
- android的xml解析方式,Android中对xml文件解析的3种方式总结
前言 xml 是数据传输的一种格式,Android 中的布局文件.设置文件等都采用它来表示.Android 中对 xml 文件的解析也有多种方式,下面介绍常用的 3 种方式: Dom . SAX 和 ...
- xml文件解析的三种方式
SAX解析XML SAX是一个解析速度快并且占用内存少的xml解析器,非常适合用于Android等移动设备. SAX解析XML文件采用的是事件驱动,也就是说,它并不需要解析完整个文档,在按内容顺序解析 ...
- dom4j工具类_基于DOM4J的XML文件解析类
XML文件解析分四类方式:DOM解析:SAX解析:JDOM解析:DOM4J解析.其中前两种属于基础方法,是官方提供的平台无关的解析方式:后两种属于扩展方法,它们是在基础的方法上扩展出来的,只适用于ja ...
- XML文件解析-DOM4J方式和SAX方式
最近遇到的工作内容都是和xml内容解析相关的. 1图片数据以base64编码的方式保存在xml的一个标签中,xml文件通过接口的方式发送给我,然后我去解析出图片数据,对图片进行进一步处理. 2.xml ...
- java怎么xml文件解析_Java对Xml文件解析
JAVA 解析 XML 通常有两种方式,DOM 和 SAX. DOM 虽然是 W3C 的标准,提供了标准的解析方式,但它的解析效率一直不尽如人意,因为使用DOM解析XML时,解析器读入整个文档并构建一 ...
- Android学习笔记之AndroidManifest.xml文件解析(摘自皮狼的博客)
Android学习笔记之AndroidManifest.xml文件解析 一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件.它 ...
- XML - XML学习/XML文件解析器(C++)实现
XML - XML学习/XML文件解析器(C++)实现 XML概述 XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识.它也是元标记语言,用于定义其他与特定领域有关的, ...
- android基础知识13:AndroidManifest.xml文件解析【转载】
注:本文转载于:http://blog.csdn.NET/xianming01/article/details/7526987 AndroidManifest.xml文件解析. 1.重要性 Andro ...
- Java中的Xml文件解析(DOM)
Xml文件 Keys: 标签</>,<?xml version="1.0" encoding="UTF-8"?> 树状节点 在Java程 ...
最新文章
- upstream--负载
- 对我影响最大的3位老师
- python相同key合并value_python之入门
- 150330之软件测试
- time+dd测试硬盘读写速度
- maka html5,MAKA H5制作
- C语言二维数组及指针引用
- 【转】Ogre 1.7版本重大改进by 诡辩
- feil在java里什么意思_JAVA 中的 - 是什么意思?
- “远端www服务支持TRACE请求“验证及修复jetty,非框架,内嵌版本
- 项目管理sod_Microsoft Visual SourceSafe(项目文件管理) V6.0 最新中文版(图文)
- openjudge 1.4.3 奇偶数判断
- UI网页设计制作思路
- 量子计算与量子信息基础
- SQL 中的 IFNULL和NULLIF
- 【2020.12】Aspose.words 20.12最新版Crack,word转pdf去水印方法
- Android 9 (P)之init进程启动源码分析指南之三
- 《人生的智慧》——人所展现的表象
- 软件工程师就业情况以及发展空间怎么样?
- 解决Win10开始屏幕磁铁图标无法加载问题