基于XML的数据交换技术研究
2015-09-11陈琦秦进
陈琦++秦进
摘要:目前,可供选择的数据交换技术有很多,例如XML、Json等。文章以XML作为数据交换的标准进行研究,首先对XML进行了必要的介绍,在此基础上对常用的XML解析器和XML与关系数据库进行交互的过程进行了详细分析。
关键词:数据交换;XML;XML解析器;关系数据库
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)17-0001-03
Research of Data Exchange Technology Based on XML
CHEN Qi, QIN Jin
(College of Computer Science and Technology, Guizhou University, Guiyang 550025, China)
Abstract: At present, there are a lot of choices of data exchange technology, such as XML, Json, etc. This article chose XML as a data exchange standard to research and firstly introduced some necessary information about XML. On this basis, analyzed the commonly used XML parser and the process of the interactions between XML and relational database in detail.
Key words: data exchange;XML;XML parser;relational database
在信息技术飞速发展的今天,网络已经全面普及。不同的信息系统中数据的结构、类型等是不同的,即各系统之间的数据是独立的、无法共享的,形成了“信息孤岛”及“信息异构”,在后期进行统计及分析的时候会因为“信息孤岛”而导致工作量的加大,并且数据处理的难度也成倍增大。现在企业中往往需要多个部门进行协作,需要频繁地共享数据,因此如何解决各业务间的数据交换成为了实现数据共享的首要问题。
目前人们使用的数据交换技术有很多种,XML就是其中最常见的一种。XML有着严格的语法规范,因此使用XML保存的数据格式都是一致的,从而能够很好地解决“信息孤岛”和信息异构问题。同时,在存入数据的时候,还能够依据XML的规范对数据进行判断,从而有效地避免数据的重复录入和数据不一致性问题。XML以其严格的标准和强大的功能赢得了众多开发人员的青睐,并成为数据交换领域的重要标准。
1 常用数据交换技术比较
数据在不同的信息实体之间交互的过程称为数据交换[1]。目前,常用的数据交换技术主要有以下四种:
1)电子数据交换(EDI)方式[2]:EDI通过统一的格式来交换企业信息,企业之间通过专用的数据网络来交换数据。EDI也带来了许多问题,如格式不灵活、成本高、安全控制困难、连接可靠性不高等。
2)中介层方式:提供一个应用程序负责专用的数据转换,这个程序是特定的、专用的、复杂的。在这种方式下,参与数据交换的各方必须严格遵循相同的规则,才能准确地对数据进行封装和解析,缺乏良好的复用性和扩展性。
3)中间数据库方式:在不同环境下使用如Access等较小的数据库系统来实现不同数据源间的数据减缓。先对要转出的数据库生成脚本,得到该数据库的表结构,然后按照不同数据库系统间的区别对脚本进行修改,生成符合规范的SQL语句,最后再在新环境的数据库系统中执行脚本[3]。这种利用中间数据库的方式需要将信息从其他地方转存到中间数据库中,这一过程需要按照一定的格式对数据进行转换,因此操作上比较繁琐、效率低下。
4)中间件方式:各个数据源将自己的数据按照一定的通用格式提供出来,实现透明的数据交互。与中间数据库方式相比,使用中间件较好地保留了各个分布场地的自治权,同时保证了一定的实时性。
2 基于XML的数据交换技术
2.1 XML介绍
XML[4]是extensible Markup Language(可扩展的标记语言)的缩写,是W3C组织于1998年2月发布的标准。W3C组织制定XML标准是为了定义一种能够在互联网上进行数据交换的标准。W3C采取了简化SMGL的策略,在SMGL基础上,去掉语法定义部分,适当简化DTD部分,并增加了部分互联网的特殊部分。因为XML是一种树状结构,可以把形式与内容彻底分离,正是基于这个原因,可以使用XML将不同数据格式的数据进行转换,从而达到数据交换的目的。此外,XML允许用户按照W3C组织的规定去定义无数个自定义标签,标签形式多种多样。XML可以用来描述关系结构的数据,还可以用作配置文件,当作一个小型的数据库或数据载体来使用。
2.2 基于XML的数据交换模型
基于XML的数据交换模型采用了上述的中间件模式来实现数据源的交换,作为沟通数据源和应用/逻辑层的一个纽带。XML在进行数据交换的过程中,一方面,针对所有数据源数据模式进行抽取,将各数据库中的不同数据表示形式统一成一致的数据视图 XML文件。另一方面,要将 XML的数据转换为 RDBMS系统下的数据组织形式,以关系数据库系统来存储数据[5]。基于XML的数据交换模型分为三层结构,如图1所示:
图1 基于XML的数据交换模型
2.3 几种常见的XML解析器
2.3.1 DOM
DOM(Document Object Model),称为文档对象模型,是以层次结构组织的节点或信息的集合,是W3C组织推荐的一种处理XML的标准编程接口,与平台和语言无关。DOM在解析XML文件的过程中,会一次性将所有内容加载到内存中,形成一个树形结构,因此DOM又被认为是基于树或基于对象的模型。在使用DOM过程中会使用Document对象来代表XML在内存中的映像,即代表一个XML文档的模型树,所有的节点都包含在该Document对象中。之后,开发人员即可使用该对象对XML文档进行相应的编辑与操作。DOM虽然使用起来较为简单,但是在处理大文件时就显得力不从心了。因为DOM每次都会将XML文件全部加载到内存中,因此对于大文件内存的占用就很高。另外,DOM解析速度较慢,效率不高,因此只适用解析小的配置文件等。
2.3.2 SAX
SAX(Simple API for XML),是sun公司提供的一个基于事件的xml解析器,既是一个接口,又是一个软件包。SAX解析XML文档不同于DOM,它是多次将XML文档加载到内存中,因此它可以一边扫描以便解析。正是基于这一特点,对于大文件,SAX的解析速度比DOM要快得多,并且占用的内存少。SAX采用基于事件的模型,在解析XML文档的时候,会根据XML此时的状态,即开始标签、结束标签,调用SAX处理器相应的方法。正如我们常说的,任何事物都具有两面性,SAX也不例外。SAX没有像DOM那样的父/子支持,因此不能交流元信息,从而导致了越是复杂的文档,其应用逻辑就越复杂,编码的难度就越大。
2.3.3 DOM4J
DOM4J是一个非常优秀的JAVA XML API,是由dom4j.org出品的一个XML解析包。DOM4J采用了java集合框架,能够完全支持DOM和SAX。因为它内部包含了多个接口,因此在使用上非常灵活,从而形成了它性能优异、功能强大和极易使用的特点。DOM4J还有一个特点,它是完全开源的,现在越来越多的java软件都是用它来进行XML解析。DOM4J主要接口图如图2所示:
图中各接口的功能分别为:Node为dom4j中XML的节点定义了多态行为;Branch为能够包含子节点的节点定义了一个公共的行为;Element 定义XML 元素;Document定义了XML文档;DocumentType 定义了XML DOCTYPE声明;Entity定义了 XML entity;Attribute定义了XML的属性;ProcessingInstruction 定义了XML 处理指令;CharacterData是一个标识接口,标识基于字符的节点,如CDATA;CDATA 定义了XML CDATA 区域;Text 定义XML的文本节点;Comment 定义了XML注释的行为。
3 XML数据交换的实现过程
使用中间件XML来实现数据的交换,将XML文档作为一个桥梁实现各平台之间的互连,从而实现数据的整合及共享。对于现有的各种资源,其中绝大部分都是结构化的数据,可以存储在关系数据库中,因此,XML与这些数据的交换实质上就是与关系数据库中数据的交换。
当前XML与关系数据库之间的相互换转换的方法有很多,例如基于模型驱动的XML与数据库双向映射技术,将XML中的数据同数据库对应的表进行映射匹配,使得XML文件中保存的数据和数据间的关系通过这种映射关系保存到数据库中[6],该方法的核心是在数据库模式(包括关系型和面向对象型)和XML Schema或DTD之间建立双向映射。另一种方法是在XML和数据库之间添加一个数据转换程序组件,将数据从XML文件中解析出来存入数据库,或从数据库中读取数据并添加到XML档中[7]。
3.1关系数据库向XML转换
关系数据库向XML转换需要经过三个主要步骤:提取、转换和存储。首先,从数据库中提取要保存在XML文档中的数据,数据的提取可以通过JDBC或者ODBC接口访问技术实现,该数据包括两部分:数据库中关系模式和表中的字段值。其次,将提取出来的数据与XML约束(DTD或XML Schema)相结合即可生成XML文档。这个过程涉及到的操作有两个:将数据库中的关系模式转换为XML约束、将数据库表中的值与XML约束结合生成XML文档。整个转换过程如图3所示。
3.2 XML向关系数据库转换
XML向关系数据库转换实际上就是关系数据库向XML转换的逆过程,也分为三个主要阶段:提取、转换和存储。首先,使用DOM或SAX等解析方法对XML进行解析,这一过程也涉及两个操作:提取XML文档中的约束(XML Schema)并将其转换为相应的关系模式、解析XML文档中的数据。其次,根据上一步得到的关系模式建表,并将解析出来的数据添加到相应的表中。这一过程可以使用JDBC或ODBC接口访问技术实现与数据库的连接。转换过程如图4所示:
图4 XML向关系数据库转换
4 结束语
XML技术有着严格的标准和强大的功能,并且提供了统一的方法来描述和交换独立于应用程序或供应商的结构化数据。因此使用XML作为中间件就可以方便的实现各数据源间数据的交换,将各数据源中的数据统一成一致的格式进行集中处理,进而消除“信息孤岛”,实现数据共享。
参考文献:
[1] 杨剑. 基于XML的异构数据交换系统的研究与实现[D].成都: 西南交通大学, 2005.
[2] 朱勤, 陆建新, 陈继红. 基于XML的异构数据交换技术及其Java实现[J]. 计算机应用与软件, 2004(11): 52-53,125.
[3] 李聪. 基于XML的数据交换平台的设计与实现[D]. 武汉: 武汉理工大学, 2009.
[4] Extensible Markup Language (XML) 1.0[EB/OL].http://www.w3.org/TR/REC-xml.
[5] 杨剑. 基于XML的异构数据交换系统的研究与实现[D]. 成都: 西南交通大学, 2005.
[6] Tom Myers,Alexander Nakhimovsky.JavaXML编程指南[M]. 北京: 电子工业出版社, 2003.
[7] 李刚. 基于Web访问数据库的实现方案[J]. 计算机工程与应用, 2000(8): 32-35.