Spring OXM- 漫谈XML解析技术

来源:互联网 发布:九次方大数据加班 编辑:程序博客网 时间:2024/04/30 07:08

  • 概述
  • XML解析技术漫谈
    • 认识XML
    • XMl的处理技术

概述

我们先从XML各种解析技术的发展历程谈起,并介绍一些主流 O/X Mapping组件的使用方法,比如XStream、Castor、JiBX、JAXB等。

从独立使用到与Spring整合逐步演变,揭开各O/X Mapping组件的神秘面纱,根据需要选择合适的O/X Mapping组件来处理对象XML之间的转换,为开发WebService应用打下良好的基础。


XML解析技术漫谈

认识XML

XML(Extensible Makup Language)可扩展标记语言,一组规则和准则的集合,用来描述结构化数据。

为了验证XML文档是否和我们预计的格式保持一致,于是人们就逐步的提出了DTD和XML Schema。

DTD是一套关于标记符的语法规则,是XML1.0规范的一部分,是XML文件的验证机制,属于XML文件组成的一部分。

XML Schema指定XML Schema定义语言,很大程度上重构了XML 1.0DTD的能力,并解决了DTD的许多局限性,比如不支持名称空间,不支持对声明的扩展和继承等等。


XMl的处理技术

为了有效的使用XML,需要通过一个XML处理器或者XML API来访问其数据。

目前JAXP1.6(JSR 206)的两种处理XML文档的方法已经得到了广泛的引用

  • DOM (Document Object Model)

  • SAX (Simple API for XML)


DOM文档对象模型是一种通过编程方式对XML文档中的乬及结构进行访问的标准,基于XML文档再内存中的树状结构, 当一个XML文件被装入处理器时,内存中建立一颗相应的树。

DOM还定义了用来遍历一个XML树及管理各个元素、值和属性的编程接口。

DOM的缺点:在将整个XML文档装入内存所引起的巨大的内存开销,当文件的数据量非常大时,这个会带来很大的性能瓶颈。


于是人们开始创立一种新的标准,这就是SAX。

SAX是一种非常简单的XML API,它允许开发者使用事件驱动的XML解析。 与DOM不同的是,SAX并不要求将整个XML文件一起装入内存。 而是一旦XML 处理器完成对XML元素的操作,它就like调用一个自定义事件处理器及时处理这个元素及相关数据。

虽然SAX解决了DOM速度慢,内存占用大的问题,但是灵活性上受到了很大的限制,比如无法随机访问文档。


于是又有一种新的基于流的Stream API for XML (简称StAX),它不仅提供了XML的处理速度,而且较好的兼顾了灵活性。 StAX是JSR 173标准,目前已经加入Java 6.0的JAXP 1.4里面。


DOM 、SAX、StAX技术都是从XML的角度来处理文档和建立模型,这对于只关注文档XML结构应用程序来说是适用的,但是很多应用程序仅仅将XML作为数据交换的媒介,更多的关注的是文档数据本身,为此人们又提出了一种XML数据绑定技术,可以忽略XML文档的实际结构,而直接使用文档的数据内容,比如Castor、JAXB、JiBX、Qucik和Zeus等。

原创粉丝点击