天天看点

解析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较复杂。

综述: