基于ADO.NET的关系模式到XML Schema的转换
- 格式:pdf
- 大小:238.25 KB
- 文档页数:3
.NET平台中访问XML数据的方法摘要:XML语言的开放性,语法的统一性,使得XML成为不同系统之间的数据交换的标准语言。
本文论述了XML文档的一般特点、XML同数据库的区别,简述了应用XML的优势。
给出了.NET平台下四种访问XML数据的方式,最后对四种方法进行简单比较。
关键词:XML数据库.NET访问XML (ExtensibleMarkupLanguage) 是可扩展标记语言,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
XML 是SGML (StandardGen2eralized Markup Language) 的子集,XML 在1998 年 2 月已被W3C 确认为国际标准, 目前XML已被大量应用于异构系统间的数据交换,数据集成,数据共享,将同一数据以不同的形式表现出来等。
1.XML 的特点XML 语言具有三个显著特点:内容和形式分离、良好的可扩展性、良好的可移植性和良好的描述性。
1.1内容和形式分离。
这个特性为XML的应用带来了很大的好处。
当只想改变数据的表现形式时,只需修改从XML 文档中分离出的用于数据表现的样式单即可。
如XSL 技术,正是由于XML文件的内容和结构分离,XSL才可以在不影响内容的情况下改变XML文件结构。
同时基于这样的特点,企业系统可以轻松地实现内容管理和流程管理的彻底分离。
1.2良好的可扩展性。
XML 允许程序员制定自己的标记集,对于一个行业或一特定群也可以制定在自己范围内的通用标记,使得XML 可以轻松适应每一个领域。
例如:MathML(数学标记语言)、和TecML(技术数据标记语言),每种语言都用于其特定的环境。
1.3良好的可移植性。
XML具有统一的标准语法,只要交换数据的平台能处理XML 文档,就能处理由XML 标记的各种格式的数据这样就使得XML具有了跨平台跨系统的特性。
基于XML网络管理的MIB转换方法研究吴黎兵;付帆;何炎祥;于天水【摘要】随着互联网规模的快速发展,传统网络管理已无法满足实际需求,一种新的基于XML的网络管理被提出.比较了基于SNMP的传统网络管理和基于XML的网络管理,表明了将XML技术运用于网络管理的优势.介绍了基于XML的网络管理体系结构,并且对过渡阶段所需的SNMP-XML翻译网关进行研究,重点讨论了SNMP-XML翻译网关中的MIB转换技术,即将MIB文件转换为XML文件.%Because of the rapid development of internet, the traditional network management cannot meets the practical demands, therefore,a new network management based on XML was proposed. In order to demonstrate the advantages of the XML - based network management,the traditional network management was compared with the XML - based network management. Then,the architecture of XML - based network management was introduced. The SNMP - XML translation gateway which was necessary during the transition period was also studied,and the MIB conversion method in SNMP -XML gateway,like converting MIB files into XML files was discussed in detail.【期刊名称】《武汉理工大学学报(信息与管理工程版)》【年(卷),期】2011(033)006【总页数】5页(P851-854,863)【关键词】网络管理;SNMP;XML;MIB转换技术【作者】吴黎兵;付帆;何炎祥;于天水【作者单位】武汉大学计算机学院,湖北武汉430072;武汉大学软件工程国家重点实验室,湖北武汉430072;武汉大学计算机学院,湖北武汉430072;武汉大学计算机学院,湖北武汉430072;武汉大学软件工程国家重点实验室,湖北武汉430072;武汉大学计算机学院,湖北武汉430072【正文语种】中文【中图分类】TP393.07网络管理协议(simple network management protocol,SNMP)自1988年由互联网工程任务组IETF提出以来得到了广泛的应用,特别是它的简单性使其容易在各种平台上部署并实现网络管理功能,现在互联网中很多网络设备都具有SNMP代理。
关系模式到模块化的XML Schema的模型映射方法侯莹;李凤岐;牛纪桢;姜厚云【期刊名称】《计算机工程与应用》【年(卷),期】2011(047)012【摘要】Based on relational schema vector model and XML schema tree model,an algorithm BTT to convert from relational schema to XML schema is proposed. BTT mapping rules preserve the integrity information of structure,properties and constraint. The conversion sequence from bottom to top confirms the modules encapsulated and reused, makes the update to XML schema can be finished in related module, greatly enhances the maintenance efficiency. The experimental results show that compared to the traditional nested XML schema, the XML schema converted by BTT has obvious advantage in the maintenance efficiency.%基于关系模式的向量模型和 XML 模式树模型,提出了一种关系模式到模块化的 XML Schema 的模型映射方法 BTT,其映射规则保持了关系模式的结构、属性以及约束信息的完整保留,自底向上的映射顺序在没有牺牲转换效率的情况下,完成了模块化的封装与重用,使得对转换后的 XML Schema 文档的更新操作可以在模块化内部完成,大大提高了维护效率.实验结果表明了与传统的嵌套层次的 XML Schema 文档相比,BTT 方法转换形成的 XML Schema 在维护效率上有明显优势.【总页数】5页(P122-125,129)【作者】侯莹;李凤岐;牛纪桢;姜厚云【作者单位】大连理工大学,软件学院,辽宁,大连,116621;大连理工大学,软件学院,辽宁,大连,116621;大连理工大学,电信学院,辽宁,大连,116024;大连理工大学,软件学院,辽宁,大连,116621【正文语种】中文【中图分类】TP392【相关文献】1.关系数据共享与交换过程中一种基于XML Schema的模式转化方法 [J], 周竞涛;张树生;孙宏伟;王明微2.数据集成中XML Schema到关系模式的转换方法 [J], 聂玲;刘波3.一种XML Schema到关系模式的转换方法 [J], 邓梦浪;陈斌全;刘琳岚4.扩展P-Schema及其在XML Schema到关系模式映射中的应用 [J], 毛玉洁;顾明5.基于约束保存算法的XML Schema到关系模式的映射方法 [J], 魏东平;王金凤;张宏伟因版权原因,仅展示原文概要,查看原文内容请购买。
C#对象与XMl⽂件之间的相互转换C#提供三种序列化⽅式,分别为:1、是使⽤BinaryFormatter进⾏串⾏化;2、使⽤SoapFormatter进⾏串⾏化;3、使⽤XmlSerializer进⾏串⾏化。
其中对于BinaryFormatter 的⽅式需要实现ISerializable接⼝,⽽XmlSeriializ不需要实现对应的接⼝,可以直接序列化。
在这⾥⾯我们主要采⽤XMlSerialize来实现对应的序列化操作进⽽实现对应的对象和XMl⽂件之间的转换关系。
在通过序列化实现对应的转换关系操作的功能时,我⾸先创建了Department ,teams,Person三个对象,并设置了对应对象之间的关系,建⽴的三个对象以及他们之间的对应关系模型如下图所⽰:对象的三者的代码为:代码如下:public class Department{public Department(){}public string Name;public List<Team> Teams;public Team this[string Name]{get{Team t = null;foreach (Team te in Teams){if (pare(, Name) == 0){t = te;break;}}return t;}}}public class Team{public Team(){}public Team(string Name,string Title){ = Name;this.Title = Title;}public string Name;public string Title;public List<Person> Persons;}public class Person{public Person(){}public Person(string Name,int Age,string Hobby,string Station){ = Name;this.Age = Age;this.Hobby = Hobby;this.Station = Station;}public string Name;public int Age;public string Hobby;public string Station;}基于以上三者的对应关系,编写对应的调⽤函数,实现对应的对象和XMl⽂件的转换,对应的实现转换的代码为:代码如下:public static void Main(){Department dep =new Department(); ="事业部";dep.Teams =new List<Team>();dep.Teams.Add(newTeam("Test","测试团队"));dep.Teams.Add(newTeam("Develop","开发团队"));dep["Test"].Persons =new List<Person>();dep["Test"].Persons.Add(newPerson("dwf", 22,"程序", "测试⼯程师"));dep["Test"].Persons.Add(newPerson("WL", 22,"代码", "测试⼯程师"));dep["Develop"].Persons.Add(newPerson("dwf", 22,"程序", "开发⼯程师"));dep["Develop"].Persons.Add(newPerson("WL", 22,"代码", "⾼级开发⼯程师"));XmlSerializer serializer =new XmlSerializer(dep.GetType());TextWriter writer =new StreamWriter("Department.xml");serializer.Serialize(writer, oSer);writer.Close();}⽣成的XMl⽂件的格式为:代码如下:<?xml version="1.0"encoding="utf-8"?><Department xmlns:xsi="/2001/XMLSchema-instance"xmlns:xsd="/2001/XMLSchema"> <Name>事业部</Name><Teams><Team><Name>Test</Name><Title>测试团队</Title><Persons><Person><Name>dwf</Name><Age>22</Age><Hobby>程序</Hobby><Station>测试⼯程师</Station></Person><Person><Name>WL</Name><Age>22</Age><Hobby>代码</Hobby><Station>测试⼯程师</Station></Person></Persons></Team><Team><Name>Develop</Name><Title>开发团队</Title><Persons><Person><Name>dwf22</Name><Age>22</Age><Hobby>程序</Hobby><Station>开发⼯程师</Station></Person><Person><Name>WL33</Name><Age>22</Age><Hobby>代码</Hobby><Station>⾼级开发⼯程师</Station></Person></Persons></Team></Teams></Department>通过以上⽅式⽣成的Xml⽂件也保存了对应对象的属性以及对应的包含的成员的信息,但是XMl⽂件⾥⾯对于对象的所有属性都是通过添加对应的⼦节点进⾏展⽰的,当通常我们对应XMl⽂件的组织,当对应的成员为对应对象的属性信息时我们更多的是希望对应的属性信息节点来设置对应的属性信息。
.NET 编程基础课程考核说明.一、考核说明“ .NET 编程基础”是中央电大网站编程专业(专科)的统设必修课程。
1、考核对象中央电大网站编程专业学生。
2、命题依据本考核说明以“ .NET 编程基础教学大纲” 为依据编制。
本考核说明是考试命题的依据。
3、考核目的和要求本课程主要考核学员对.NET 框架、通用类型系统、面向对象相关知识的理解、文件操作、使用 操作数据、创建和使用Web 服务,等内容。
要求学员记住一些基本概念、主要的名词术语和.NET 程序设计的基本方法,但不要求学员死记具体的内容细节和程序实例。
具体考核要求分为三个层次:了解、理解和应用。
(1)了解即知道有关概念、方法和背景;(2)理解是在了解的基础上能够进行简单分析和判断;(3)应用是在理解的基础上能够进行实际操作和应用。
4、命题原则(1)在教学大纲和考核说明所规定的目的、要求和内容范围之内命题。
由于本课程为.NET 最新技术,实践性非常强。
为了考察学员对所学知识的应用能力,防止死记硬背情况的发生,设计了部分编程题,均参照教材中的案例和实验中的练习题目。
(2)试题宜小而多,覆盖面广,并突出要点。
5、试题题型有选择题、填空题、判断题、简答题和编程题五种题型。
(1)填空题:这类题目主要考察学员对基本概念的理解能力。
(2)选择题:给出一些有关.NET 编程基础概念和特点方面的试题,要求学员从题后给出的供选择的答案中选择合适的答案,补足这些叙述。
这类题目主要考察学员对.NET 概念、面向对象概念和包括 在内的许多基础知识的掌握程度。
以单选题为主,部分多选题目在题中单独注明。
(3)判断题:给出一些有关.NET 编程知识的叙述,要求学生判断相应叙述的对错。
这类题目主要考察学生对相关知识点的正确理解情况。
(4)简答题:这类题目包含名词解释、回答问题。
(5)编程题:编写简单的程序或者程序填空,考察学生的编程能力。
6、考核形式采用期末考试与平时成绩相结合的方式。
1.3 习题1. 以下那些情况适用使用非连接环境的体系结构?A. 供某证券公司的营业部进行交易使用的软件B. 供某企业的领导了解该企业各种数据的软件C。
某饭店对客房进行管理的软件D。
畜牧场对牲畜的数量进行跟踪的软件2. 在Visual Studio .NET 的服务器资源管理器中,下列哪些是可见的服务项目?A。
数据连接B。
网络连接C. 事件日志服务D。
设备管理器2。
4 习题 模型中的下列哪些对象属于Connected 对象?A。
ConnectionB. DataAdapterC. DataReaderD. DataSet2。
目前,Microsoft .NET Framework 的发行包中包含以下。
NET 数据提供程序。
A。
SQL Server .NET 数据提供程序B. OLE DB 。
NET 数据提供程序C。
ODBC 。
NET 数据提供程序D。
XML 。
NET 数据提供程序3。
为访问Microsoft Access 2000 数据库中的数据,可以使用以下哪种.NET 数据提供者连接到数据库?A。
SQL Server 。
NET 数据提供程序B。
OLE DB 。
NET 数据提供程序C. ODBC 。
NET 数据提供程序D。
XML .NET 数据提供程序4. 为了在程序中使用ODBC .NET 数据提供程序,应在源程序工程中添加对程序集______的引用。
A。
System.Data。
dllB。
System。
Data.SQL。
dllC。
System。
Data。
OleDb.dllD。
System.Data.Odbc。
dll5. 打开SQL Connection 时返回的SQL Server 错误号为4060,该错误表示:A。
连接字符串指定的服务器名称无效B. 连接字符串指定的数据库名称无效C。
连接超时D. 连接字符串指定的用户名或密码错误6. 为使用OleDb .NET Data Proviver连接到SQL Server 2000数据库,应将Connection对象的ConnectionString属性中的Provider子属性的值设置为:A。
C#中与XML数据交互技术摘要: DataSet对象访问XML数据以及从DataSet数据集中输出XML数据的方法。
关键词: XML语言 DataSet XmlDataDocument由于XML(Extensible Markup Language)具有良好的数据描述功能和存储格式,并且有很高的可扩展性和共享性,所以XML技术得到了快速发展及普遍应用。
XML已成为从中间层传送数据到桌面的工具。
由于XML的数据可以通过中间层代理与多种后端(数据库)源集成,所以XML技术已得到很多软件平台和数据库制造商的支持。
Microsoft的.NET围绕XML这一核心提供了一个强大而快速的开发工具——C#,它具有前所未有的高开发效率。
特别是在XML与编程方面,通过XML类和之间的紧密集成,将关系数据和XML在.NET 框架中结合在一起。
1 体系结构是由一系列的数据库相关类和接口组成的,它的基石是XML技术。
通过 不仅能访问关系型数据库中的数据,而且还能访问层次化的XML数据。
提供了二种数据访问的模式,即连接模式(Connected)和非连接模式(Disconnected)。
ADO技术中就有连接模式,而非连接模式是中才具有的。
与传统的数据库访问模式相比,非连接模式为应用程序提供了更大的可升级性和灵活性。
在该模式下,一旦应用程序从数据源中获得所需的数据,它就断开与原数据源的连接,并将获得的数据以关系数据库中表的形式存放在主存中。
在应用程序处理完数据后,它再取得与原数据源的连接并完成数据的更新工作。
中的DataSet类是非连接模式的核心,它提供了一个与数据来源无关的数据表示方式,数据集对象(DataSet)可以将其中的数据以XML的形式存放。
用户既可以从远程或本地的一个数据库中获取数据集对象,也可以从一个XML数据流中获取数据集对象。
而从用户的角度来看,数据源在哪里并不重要,也无需关心。
基于的XML与数据库数据交换XML是一种简单、与平台无关并被广泛采用的标准。
为什么有时要用XML文件来存储数据而不使用数据库。
是因为很多时候,用数据库太浪费。
而且环境要求较高,必然要使用一个数据库,安装和支持一个分离的服务器处理进程,还要有安装和支持它的管理员来对数据库进行管理。
必须会使用SQL语句,转换数据等操作。
而如果你用XML文件存储数据,就可以减少额外的服务器的负荷。
你只要使用文本编辑器,就可以对这些复杂的程序进行处理。
下面将使用记录天气信息来说明XML和数据库之间的转换。
为了记录天气信息我们建立一个weather.mdb数据库,在这个数据库中有一个weather表。
表1 Weather表同时建立一个weather.xml文档来说明它们之间的转换。
北京多云上海晴广州多云转晴1 使用DataSet读取天气信息的XML文档并显示XML Schema中还支持名域。
一个Schema除了可以定义XML文档词汇表外,还可以通过名域来定义目标名域,和其它可能会使用到的词汇名域。
XML Schema提供了一个丰富而更具弹性的机制来定义XML文档词汇表。
它使用XML语言本身来定义关于一个XML文档的元信息(meta-information),这使得XML的协同工作能力大大的增强了。
我们来看如何从xml文件中读取数据。
1.1 首先定义DataSet对象,并指要读取的XML文档路径,于使用DataSet 提供了ReadXml方法读取XML文档,并保存在DataTable对象中DataSet mydataset = new DataSet();mydataset.ReadXml(Server.MapPath(”~/App_Data/weather.xml”));DataTable myTable = mydataset.Tables[0];1.2 接下来使用循环用表格方式打印在网页上…foreach (DataColumn myColumn in myTable.Columns){Response.Write(”“ + myRow[myColumn] + ““);}Response.Write(”“);}…完成后运行,天气信息的XML文档就会以表格的形式打印要网页上。
第28卷总第68期 西北民族大学学报(自然科学版)Vol.28,No.42007年12月 Journal of No r th w est U n iver sity f o r N a tiona lities(Nat ural Science )Dec ,2007基于.N ET 的异种数据交换模型黄 箐,马德山,项 链(西北民族大学计算机科学与信息工程学院,甘肃兰州730030)[摘 要]传统异种数据交换强调借助某一通用XML Schema 作为过渡实现不同格式数据之间的交换,尽管理论上可行,但该通用XML Schema 并没有被制定出来,所以异种数据交换一直没能实现1基于对传统方式的理论研究,分析XML 与.NET 技术相结合在异种数据交换的优势,最终将结合实例详细描述一种完全可以不借助通用XML Sc hema 实现数据交换的模型1[关键词]XML ;XML Schema ;异构数据库;数据交换;伪通用数据标准;W eb Service[中图分类号]TP311 [文献标识码]A [文章编号]1009-2102(2007)04-0029-080 引言异种数据库之间数据的平滑流动及分布式数据交换一直倍受数据库界的关注,也是长期困扰数据库应用开发人员的技术难题1传统数据交换认为核心问题是信息描述的标准化1这就导致大型企业为了实现数据共享,一直期望建立企业数据集成标准,用一个统一的数据模型来描述企业数据,但要实现困难却很大1笔者针对异种数据库数据交换标准化问题,实现了一个借助.N ET Framework 创建伪通用数据标准的、基于X ML Schema 的数据交换模型11 基于.N ET 异种数据交换模型的技术核心该模型的最大特点在于通过.NET Framework 中的DataSet 类创建数据的伪通用XML Schema ,然后再在这个Schema 基础上完成数据交换1然而传统的做法是先得到某一类型数据集的Schema ,然后把带有该Schema 的数据集转换为符合通用Schema 的数据集,再把这类通用Schema 下的数据集转换为符合目标Schema 的数据集1若要实现传统理论就得解决两大问题:第一,如何设置通用Schema 标准;第二,普通Schema 格式的数据集与通用Schema 格式的数据集之间如何转换1问题一是个社会问题,至今还没有完全统一;问题二从技术角度完全可以实现,但过程的复杂程度大大降低了转换的性能.2 模型的具体实现模型的最后实施依然沿用传统方法中的XML 、XML Schema 、DOM 技术1不同的是在开发平台上选择.NET ,与数据库的连接采用ADO.N ET ,编程语言选用C #1以下将分别简述各技术对模型实现的优势作用12.1 XML作为一种可扩展性标记语言,XML 为Web 页面上的结构化文档和数据定义了一套通用格式,其自描述性的特点使其非常适用于不同应用间的数据交换;同时,XML 的自解释性使客户端在收到数据的[收稿日期]3[作者简介]黄箐(8—),男,江西人,硕士研究生,研究方向信息管理系统、知识管理系统、异构数据库建设12007-10-2194:同时也能理解数据的逻辑结构与含义,从而使广泛、通用的分布式计算成为可能,具体在数据交换方面的优势有:1)XML 具有内容和形式分离的、良好的可扩展性,良好的跨平台移植性和良好的自描述性等优点,它适合动态电子商务系统发展的需求12)对结构良好的表示能力:在进行数据交换时,由于源数据和目标数据在结构上存在差异,不同的数据源由不同的数据模式构成,表现形式各不一样,如关系型、对象型、文本文件、Web 页面,以及一些遗留系统中的数据等,即使对同种模式的数据也存在数据结构和表现形式上的差异1对同一现实对象来说,在不同数据库中的概念模式不一样1例如,职工的基本信息在一个数据库中用一个实体表示,但在另一个数据库中可能用多个实体表示1这些结构上的差异也会导致数据交换中的困难1因而,在实际交换过程中,首先必须将数据模式统一,将异构的数据模式统一为一个公共的、一致的数据模式.XML 具有灵活的数据结构的表示能力1利用XML 建立一个异构数据的统一模式,使得用户在进行数据交换时,只需要将一个由XML 描述的模式转换成目标模式即可1这样利用XML 作为中间模式就减少了不同模式之间进行转换的工作量1通常可以用DTD 或X ML Schema 来定义XML 文档的结构13)对数据的表示能力:XML 文档从本质上来讲是一种树形结构1XML 由嵌套的带有标记的元素构成1每个元素实际上为树中的一个结点1对XML 文档中的某个元素来说,可以存在若干属性,属性可以用来描述元素的相关信息1可以通过对树的遍历来获取整个XML 文档所包含的数据,也可方便地查找某一个或几个指定节点14)对语义的表示能力:对一种数据类型,可以用属性对其进行多方面的描述,如名称、数据类型、单位、格式等,所以XML 可通过增加元素的属性来加强数据的语义表示能力15)异构应用间的数据共享:XML 的灵活性、可扩展性以及自我描述等特性使异构应用间的数据共享成为可能16)不同来源数据集成:XML 能够将不同来源的结构化数据结合在一起,通过在中间层的服务器对从后端数据库和其他应用程序处来的数据进行集成12.2 XML SchemaXML Schemas:它定义了XML 文档中的元素和属性结构和内容的规则,因为XML Schemas 本身是XML ,所以它们能像XML 实例那样被处理和管理,拥有上述XML 所具备的所有优势1XML Schemas 支持更大范围的数据类型,它提供了灵活的语言来指定、包装、发布和交换应用程序或业务边界间的结构化和非构化信息1换句话说XML Schema 定义了整个XML 内容数据的格式,根据Schema 就能识别出XML 节点中数据的类型1213 .NET基于.NET Framework 的.N ET 开发平台为XML Web 服务和其他应用程序提供一个高效安全的开发环境1在开发方面,.N ET 框架提供了全新的数据库访问技术 (仅仅是.N ET Frame 2work 很小的一部分,提供访问数据的能力),并通过System.Dat a 中的DataSet 全面支持XML 12.4 如图1所示,ADO.N ET 的核心是.NET 数据提供者1这是一套特殊的组件,用于访问特殊类型的数据源(例如OL E DB 数据源、ODBC Data Source 或SQL Server 数据库等),全权负责与数据库的连接1数据源中有四个常用类:Connection 、Command 、DataAdapter 、Dat aReader 1微软标准规定首先通过Con 2nection 类连接并打开数据库,然后通过Command 类对数据库命令进行封装(这些命令可以是内联的SQL 语句,也可以是存储过程),接着使用DataAdapter 类执行命令,把获得的结果缓存进Dat aSet ,最后通过Dat aReader 类对数据源中结果数据进行高速、只向前的访问1215 Data S etN T 与XML 具有很强的交互和集成,主要表现在对象序列化和远程处理、双编程接口、XML 驱动的批处理更新等方面1在N T 中,可以用若干种方法将对象保存到XML 文档以及从XML 文档还—3—.E .E 0原对象1总之,这种能力属于DataSet 对象,但可以用最少的代码扩展到其他容器对象.将诸如Data T 2able 和DataView 这样的对象保存到XML ,实质上可视为数据集序列化的特殊情况.此外,.NET 和XML 类提供了一种统一的中间API ,程序员可通过同步的编程接口来使用它.可以使用XML 基于节点的分层法或基于列的表格式数据集关系法来访问和更新数据.可以在任何时候从数据的数据集表示形式切换到XML DOM ,反之亦然1数据将进行同步,而且在其中一个模型中输入的任何更改会立即在另一个模型中有所反映,并可以看见1图1 框架图综合以上分析,我们在系统开发采用了Microsoft.N ET 开发平台作为系统的开发平台,用于C #作为开发语言13 XML 数据交换模型整体设计XML 数据交换模型是对传统的解决方案的全面改进1为了详细描述新模型方案在哪些地方做了修改,本文将对传统模型进行大致分析1311 传统的基于XML 的数据交换模型图2 传统数据交换总体设计图假设企业A 和企业B 之间有数据交互,完整的数据交换流程(图2)如下:1)企业A 向交换中心提交的XML 数据一format 2A(data)12)验证format 2A (data )的格式是否正确,内容是否完整13)交换中心提取该数据的格式f 2,即其采用的X ML S 1)根据行业标准,对每一种数据类型建立一个统一的数据结构f ,即该数据的通用XMLormat A chema 4ormatSchema 15)获取企业B 采用的数据的格式format 2B ,即其采用的XML Schema 16)根据相应的XML Schemas ,生成转换规则f ’A →O (X )和f ’O →B (X ),即对应的XSL T 文档,设为XSL T ’A →O 和XS L T ’O →B 17)调用XSL T ’A →O 将format 2A (dat a )转换为标准的XML 文档,即f ’A →O (X ):format 2A (data )→format (data)18)调用XSL T ’O →B 将采用平台格式的XML 文档转换为企业B 能识别的格式,即f ’O →B (X ):format (data )→format 2B (dat a )19)把生成的XML 数据一format 2B (data)发送到企业B 1这种解决方案固然完整,但却仅仅停留在理论上1若要真正实现这种解决方案必需处理两个难点:第一,通用XML Schema 格式至今还未能制定出来1因为该通用XML Schema 格式需要把各式各样的格式都包容进去,要考虑的方面过多,所以现在还处于研究阶段1第二,就算通用XML Schema 格式被制定出来,在第六步还要动态生成转换文档XS L T ’A →O 和XSL T ’O →B ,如图3所示1图3 S 映射算法流程图该算法首先解析源和目标的S 生成相应的DOM 树,然后对两棵树进行映射找出其中的对应—3—ch ema chema 2关系,从而动态生成转换文档XS L T ,最后依照XS L T 完成特定Schema 格式的数据集与通用标准Schema 格式的数据集之间的转换,所以说这个算法的复杂程度降低了整个转换性能1312 基于.N ET 的数据交换模型通用Schema 格式至今还未被制定出来的根本原因是从宏观的行业格式入手,那就会涉及成千上万种行业1不管什么行业都有各自的格式,企业之间的交流常常因为格式不一致导致大量时间的浪费.例如A 企业制作的报表是Excel 格式的,B 企业处理的报表是HTML 格式的,一旦A 企业把报表提交给B 企业,由于格式不对,往往要对流程先进行转换1但由于缺少通用Schema 的支持,一般的转换都是另辟稀径,传统方案最终得不到实现1经过分析发现不管是Excel 格式还是HTML 格式,符合这些格式的数据都来自于数据库1也就是说,行业格式仅仅是经过修饰后的数据库数据,即先从数据库提出数据再将数据转换符合行业格式的数据1既然处理的仅仅是数据,笔者认为应该可以直接从不加任何修饰的数据库数据着手,这样便有效地避开了行业格式不同对数据库数据转换的影响,也不需要进行无谓的动态生成XSL T 文档,就可大大提高性能1图4 基于.N ET 的数据交换模型设计图如图4所示,(对比图2)在结构上的确比传统的方案缩短了许多流程1值得注意的这里通用Schema 不是基于行业格式制定的标准Schema ,而是使用.N ET Framework 中的Dat a 类对数据集进行提取产生的伪通用Schema 标准1其大体过程归纳为首先通过ADO.N ET 中的OL E D B 数据源从具体数据库中提取出数据集,通过Dat aSet.WriteXml 方法把数据集写进某一具体XML 文档1只有经过该方法写入的XML 文档才是带有特定.NET 格式的XML 文件,即这个.N ET 格式Schema 就是伪通用Schema 标准1接下来提取这个带有伪通用Schema 标准格式的XML 数据,将数据集导入进具体数据库,即对这个伪通用Schema 标准进行转换,转换的方法是DataSet.ReadXml ,该方法与上述Dat aSet.WriteXml 方法对应,都是.NET Framework 中的方法,属于统一种机制下的两种操作1因为提取与注入都是针对同一种格式,所以就不需要像传统方法那样动态生成转换文档,具体流程可以参照图5、图61假设企业A 和企业B 之间有数据交互,对基于.NET 数据交换模型进行完整的数据交换流程如下:1)区分要提取的对象到底是哪一种数据库,常见的有Oracle 、SQL 、Access 、FoxPro(dbf 形式)、Excel 等1然后使用ADO.N ET 中的OL E D B 数据源与具体某一种类型的数据库进行连接1以下分情况讨论连接不同的数据库需要采取的各项措施:如果要连接SQL 数据库,我们把连接字符串定义为“Provider =SQLOL ED B ;Data Source =服务器名;user id =用户名password =密码;i nit ial cat 2alog =数据库名”1如果要连接Access 数据库,我们把连接字符串定义为“Provider =Microsoft.Jet.OL EDB.4.0;Data Source =数据库所在地址”;如果要连接FoxPro 数据库,我们把连接字符串定义为“Provider =V FPOL EDB.1;Data S ource =数据库地址;Ext ended Properties =dBASE IV ;”1如果要连接Excel 数据库,我们把连接字符串定义为“Provider =Micr osoft.Jet.OL ED B.4.0;Dat a Source =数据表所在地址;Extended Properties =Excel 8.0”1)查询待操作的数据库中某一张表,把查询的结果集放入D S 缓存内,最后把带伪通用S 格式定义的数据f ()一齐写入指定的XML 文件1通过N T F 为我们提供2ata et chema ormat dat a .E ramework的DataSet 中的Write Xml 方法可以轻松实现写入,而不必手工编写提取方法,然后将S chema 解析到数据中,最后再把S chema 与数据结合写入,具体方法是“Data S et.Writ eXml (“指定的XML 文件”,Xml WriteMode.Writ eSchema )”1这样便得到以下带有伪通用XML Schema 格式的XML 数据1 图5 导出数据进XML 文件 图6 把X ML 文件中的数据导入进数据库该文档主要分为两部分,前半部分是XML Schema ,后半部分是对应S chema 的数据1<xs :element name =“ShipperID ”msdat a :ReadOnly =“t rue ”msdata :Auto Increment =“t rue ”t ype =“xs :int ”/>说明该表的第一个字段是Shipper ID ,只读类型,自动标识,整型1<xs :element name =“CompanyName ”> <xs:si mple Type > <xs :restriction base =“xs :st ring ”> <xs :maxLengt h value =“40”/> </xs:rest riction > </xs :simple Type ></xs:element >说明该表第二个字段是CompanyName ,字符串类型,最大长度为40,无任何约束条件1<xs :element name =“Phone ”minOccurs =”0”> <xs:si mple Type > <xs :restriction base =“xs :st ring ”> <xs:maxLengt h value =“24”/> </xs :rest riction > <x Ty ><x >—3—/s:si mple pe /s :element 4说明表的第三个字段是Phone ,字符串类型,最大长度为24<xs :unique name =“Constrai nt1”msdata :PrimaryK ey =“true ”> <xs :selector xpat h =“.//Shippers ”/> <xs :fiel d xpat h =“Shipper ID ”/></xs:unique >说明表存在约束,主键为ShipperID<Shippers > <Shipper ID >1</Shipper ID > <CompanyName >S peedy Express </CompanyName > <Phone >(503)555-9831</Phone ></Shippers >图7 拥有伪通用Schema 格式的XML 文档以上数据反映ShipperID 、C ompanyName 、Phone 的值,数据类型由以上的Schema 定制1这样整个带有N T 格式的X ML 就完全成型,这便是笔者提出的伪通用S 格式1在传统方案中时常强调数据类型的转换要一一对应1例如要处理D T 类型的数据,必须在S 当中申明该字段为.E chema at a i me chemaData Time类型,否则在导入时就会因为数据类型没有得到妥善处理导致注入数据时经常报错1但是笔者提出的这套提取Schema的方法,把所有特殊的数据类型(包括Data Ti me类型)统统转换成St ring类型,这样在构造SQL插入语句时就不会因为数据类型不一致报错1整个方案把特殊类型先转换成字符串类型,利用字符串类型的普遍性巧妙地避开特殊数据类型难以处理的问题1否则在构造Insert语句的时候还必须事先判断数据类型,然后使用Convert函数对数据类型进行转换13)区分要注入的对象到底是哪一种数据库,常见的有Oracle、SQL、Access、FoxPro(dbf形式)、Excel 等1确定后使用中的OL E DB数据源与具体某一种类型的数据库进行连接14)从指定的XML文件中提取该数据的格式format(dat a)1DataSet.ReadXml(“指定的XML文件”,Xml ReadMode.ReadSchema);做好相应映射操作(因为很可能源字段与目标字段不一致),对应好后动态构成插入操作的SQL语句,最后执行插入便完成对数据的注入工作1严格按照以上步骤进行实验,成功完成了SQL、Access、Excel、FoxPr o(.dbf)数据库之间的交错转换.说明基于.N ET的数据交换模型确实实现了异种数据库数据之间的交换14 结论通过对当前各种数据交换技术的比较以及对XML技术和传统的数据模式的分析,本文主张使用.NET 进行异构数据交换,设计了一种基于XML的异构数据交换模型,并详细介绍了其设计和实现1最终通过该模型在实验中的良好表现从实践角度证明模型的可行性1参考文献:[1]李宗安.论协同电子商务系统建设[J].商业时代,2004,3:50-511[2]Dav id S.Linthicum(美).B2B应用集成为企业发展提供无限动力[M].李路译,北京:科学出版社,2002.61[3]Chris Kn owles,Ste p hen Mohr(美) XML高级编程[M].刘爽译.北京:清华大学出版社,2002.21[4]Dan W a hlin(美)1基于XML的开发[M].王宝良译,北京:清华大学出版社,2002:49-2291[5]Extensible Mar ku p Language(XML) 1.0.http://www.,,}TR/R EC-xml1[6]Alex H omer,Dave Sussma n(美)分布式数据应用程序高级编程[M].魏撒红,任东胜等译,北京:清华大学出版社,2002.111H eter ogeneous Data Exchange Modele B ased HUANG Qing,MA De-shan,XIANG L ian(C ompute Science and Infor mation Engineering College of Northwest Univer s ity for Nationalities,Lanzhou G ansu 730030,China)[Abstract]The generic XML Schema hab been used as a t ransition to different data format s i n t he t radi2 tional st rong het er ogene ous dat a exchange.Al though feasi ble t heoretically,t he common XML Schema was never enacted.There fore,dissimilar data exchange failed to be materialized.Based on t he t radit ional met hod of t heoretical research,heterogeneous dat a exchange advantages were analysed to i ntegrate XML i n t he t hesis.At the last,a bypass was completel y descri bed also by to using common XML Schema data exchange model wit h combining example informativel y.[K ey w ords]XML;XML Schema;heterogeneous database;Data exchange;Pseudo c ommon data st andards ——63。