解析XML的几种方式的原理与特点

更新日期: 2020-09-30阅读: 1.3k标签: xml

XML概述:

XML英文全写为eXtensible Markup Language(称之为 可拓展的标记语言),它是由W3C制定出来的一套关于 数据传输,使传输的数据内容统一 的规范;它是跨平台并且与软硬件无关的工具,开发中经常用于去配置文件。


解析XML的几种方式:

XML的解析方式分为四种:dom解析、SAX解析、JDOM解析、DOM4J解析,前两者是基础方法,后两者是扩展方法且只适用于Java平台。

 

DOM解析(Document Object Model):

是基于树型结构的节点或者是信息片段的集合;由于是树型结构的节点和信息片段的集合,所以在解析时需要加载整个文档和构造树型结构,然后才可以检索和更新节点信息,并且检索和更新效率会更高(因为是树型结构的方式);但对于比较大的文档在解析时会很耗资源(因为文档大所以解析时加载时间要长,内存要占的多,又要构造树型结构更耗时间)

通过DOM接口,应用程序可以在任何时候访问xml文档中的任何一部分数据,因此利用DOM接口访问的方式也称之为随机访问。

DOM解析的特点:

优点:整个文档都在内存中,便于 CRUD等操作。

缺点:文档较大会很消耗资源,不能解析比系统内存大的文档。

 

SAX解析概述(Simple api for xml):

是基于事件的解析器,主要是通过事件源和事件处理器来工作。当事件源产生事件后,调用事件处理器的处理方法即可解决;若是需要调用事件处理器的特定方法时,则需要传递给事件处理器所需要处理的事件的状态,这样事件处理器才能根据事件的状态信息进行相应的处理。PULL解析:和SAX解析类似,主要差别在于事件需要开发人员自己获取事件然后处理,不像SAX有处理器触发一个事件的方法来执行我们的代码

SAX解析的原理:

对文档进行顺序扫描,在扫描到文档(Document)开始和结束/元素(Element)开始和结束等地方,通知事件处理函数进行对应的操作,然后重复扫描直到整个文档结束。

SAX解析的特点:

优点:可以边解析边调用执行、解析速度快,在sax过程中不能进行增删改

缺点:不需要保存到系统内存,可以解析比系统内存大的文档

 

JDOM解析概述:

JDMO是一种解析XML的Java工具包,它基于树型结构,利用纯Java技术对xml文档实现解析(只适用于Java语言)

JDOM解析特点:
优点:使用大量的集合类而不是接口,简化了DOM的API,同时易于熟悉集合类的Java开发人员。

缺点:灵活性和性能比较差(和DOM类似,大于10M的文档时内存溢出)

 

DOM4J解析概述:

DOM4J是一个开源的,易用的库,用于XML、Xpath、XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM、SAX、JAXP。

DOM4J解析特点:

简单易用,采用了Java的集合的框架,完全支持SAX,DOM和JAXP。
优点 1、大量使用了Java的集合类,方便Java开发人员。2、支持XPath(用于对xml文档节点的选择)。3、性能较好。
缺点 1、大量使用了接口,API较复杂。

 

综述: 

JDOM 和 DOM 在性能测试时表现不佳,在测试 10M 文档时内存溢出。在小文档情况下还值得考虑使用 DOM 和 JDOM。 虽然 JDOM 的开发者已经说明他们期望在正式发行版前专注性能问题,但是从性能观点来看,它确实没有值得推荐之处。另外,DOM 仍是一个非常好的选择。DOM 实现广泛应用于多种编程语言。它还是许多其它与 XML 相关的标准的基础,因为它正式获得 W3C 推荐(与基于非标准的 Java 模型相对),所以在某些类型的项目中可能也需要它(如在 JavaScript 中使用 DOM)。 
SAX表现较好,这要依赖于它特定的解析方式。一个 SAX 检测即将到来的XML流,但并没有载入到内存(当然当XML流被读入时,会有部分文档暂时隐藏在内存中)。 无疑,DOM4J是最好的,目前许多开源项目中大量采用 DOM4J,例如大名鼎鼎的 hibernate 也用 DOM4J 来读取 XML 配置文件。如果不考虑可移植性,那就采用DOM4J吧!


链接: https://www.fly63.com/article/detial/9689

JaveScript 中使用 XSLT转换XML文档

我们经常将数据存储在XML 中,在展示的时候需要转换为其它的形式,这里介绍使用XSLT 对XML数据进行转换。要学习XSLT对XML的转换,需要先了解三个文件。

XML入门教程

XML 指可扩展标记语言(EXtensible Markup Language)。XML不会做任何事情,XML被设计用来结构化、存储以及传输信息。我们需要编写软件或者程序,才能传送、接收和显示出这个文档。

PHP中的XML解析的5种方法

不管是桌面软件开发,还是WEB应用,XML无处不在!然而在平时的工作中,仅仅是使用一些已经封装好的类对XML对于处理,包括生成,解析等。假期有空,于是将PHP中的几种XML解析方法总结如下:

XML基础知识总汇

随着json等一些技术的普及,似乎xml的路子越来越窄,虽然xml的一些功能被其他的一些技术代替,但是学习xml还是非常有必要,如果用xml存储一些大量数据,还是有一定优势的,就算你不管这

xml文件中的XPATH、DTD

XPath 是一门在 XML 文档中查找信息的语言,可用来在 XML 文档中对元素和属性进行遍历。XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 同时被构建于 XPath 表达之上。因此,对 XPath 的理解是很多高级 XML 应用的基础

XML处理指令

处理指令(PIs)允许文档包含用于应用程序的指令。指令并不是文档字符数据的一部分,但是必须通过应用程序传递。 处理指令可以用于将信息传递给应用程序。处理指令可以出现在文档任意位置的标记外部。可以出现在序言中

XML可扩展标记语言

XML:可扩展标记语言,XML的标签是没有被定义过的,需要自行定义,宗旨是做数据传递,而不是做数据展示;1、xml文件最顶端做声明2、所有标记必须成对出现(没有单标记)3、严格区分大小写

JSON和XML之间的区别是什么?

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它完全独立于语言。它基于JavaScript编程语言,易于理解和生成。XML(可扩展标记语言)旨在传输数据,而不是显示数据。这是W3C的推荐。

javascript如何读取xml?

javascript读取xml的方法:使用DOMParser对象解析XML文本并返回一个XML Document对象。然后调用parseFromString()方法读取。

javascript如何读取xml文件?

JavaScript是一种属于网络的脚本语言,通常通过嵌入在HTML中来实现自身的功能。XML文件格式是纯文本格式,在许多方面类似于HTML,XML由XML元素组成。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!