首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Spring OXM- 漫谈XML解析技术

Spring OXM- 漫谈XML解析技术

作者头像
小小工匠
发布2021-08-17 10:30:50
发布2021-08-17 10:30:50
6730
举报
文章被收录于专栏:小工匠聊架构小工匠聊架构

概述

我们先从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等。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/11/22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • XML解析技术漫谈
    • 认识XML
    • XMl的处理技术
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档