一种存储xml数据到关系数据库的方法

文档序号:6366380阅读:234来源:国知局

专利名称::一种存储xml数据到关系数据库的方法
技术领域
:本发明涉及一种数据的存储方法,尤其涉及一种存储XML数据的方法。
背景技术
:XML是一种描述型的标记语言,与HTML同为SGML(标准通用标记语言,IS0-8879国际标准)的一种应用。由于XML在可扩展性、可移植性和结构性等方面的突出优点,它的应用范围突破了HTML所达到的范围。一篇XML文档由标记和内容组成。XML中有六种标记元素(elements)、属性(attributes)、实体引用(entityreferences)、注释(comments)、处理指令(processinginstructions)和CDATA段(CDATAsections)。XML与HTML最显著的不同是XML文档中引入了“文档类型声明”(DocumentTypeDeclarations)。DTD使文档可以与分析器交流关于它的内容的元信息。DTD的出现,赋予了XML文档可扩展性、结构性和可验证性,使XML具备了类似于数据库的一些性质,可以利用XML来组织和管理信息;又可以与HTML—样在浏览器中方便地表示,在Internet上高效地传递和交换。目前,处理XML文档的方式主要有SAX与DOM两种。SAX(SimpIeAPIforXML)是一种基于流的、以事件处理方式工作的接口。SAX2.O在2000年5月发布,增强了许多功能,包括对名字空间的支持。D0M(DocumentObjectModel)则是在对XML文档进行分析后,在内存中建立起一个完整的树结构,然后在此基础上进行各种操作。简单地比较来看,SAX对系统资源要求低、速度快,但对文档的操作是只读的;D0M的处理能力强大,但要求大量的系统资源,尤其是对于大的文档。而后还出现了Xpath和Xpointer用以完成XML的搜索和转换;XSL、XSLT和SOAP用以完成XML的远程对象访问,XMLQueryLanguages的出现使XML查询语言可用于任何XML文档。而随着网络和Internet的发展,数据交换的能力已成为新的应用系统的一个重要的要求。XML的好处是数据的可交换性(portable),同时在数据应用方面还具有如下优点=(I)XML文件为纯文本文件,不受操作系统、软件平台的限制;(2)XML具有基于Schema自描述语义的功能,容易描述数据的语义,这种描述能为计算机理解和自动处理;(3)XML不仅可以描述结构化数据,还可有效描述半结构化,甚至非结构化数据。XML文件是数据的集合,它是自描述的、可交换的,能够以树型或图形结构描述数据。XML提供了许多数据库所具备的工具存储(XML文档)、模式(DTD,XMLschema,RE1AXNG等)、查询语言(XQuery,XPath,XQL,XML-QL,QUILT等)、编程接口(SAX,DOM,JD0M)等。但XML并不能完全替代数据库技术。XML缺少作为实用的数据库所应具备的特性高效的存储、索引和数据修改机制;严格的数据安全控制;完整的事务和数据一致性控制;多用户访问机制;触发器、完善的并发控制等。因此,XML文本在数据读取的性能方面较差,如果需要多次读取同样的XML文本,这种劣势就会更加明显,尽管在数据量小、用户少和性能要求不太高的环境下,可以将XML文档用作数据库,但却不适用于用户量大、数据集成度高以及性能要求高的作业环境。
发明内容为了解决现有技术存在的不足,本发明提供一种存储XML数据到关系数据库的方法,将XML数据保存到关系数据库中,加快数据的读取访问速度。为了实现上述目的,本发明提供的一种存储XML数据到关系数据库的方法,包括以下步骤将一个XML的Schema拆成一个或多个映射配置文件,每个映射配置文件对应一个关系数据库的表;解析XML文本,按照映射配置文件中的关联关系将XML文本中的数据插入到多个关系数据库的表中;通过访问数据库的方式读取XML文本的数据。其中,所述映射配置文件由一个根节点和多个子节点构成,其中,所述根节点的属性包括名称,起始深度,深度数;所述子节点的属性包括ID,父ID,名称,深度数,最大值,类型。其中,所述根节点的名称,为非空字符串,用于指定数据库表的名称;所述根节点的起始深度,为正整数,当XML树解析深度为该值时开始使用该映射文件;所述根节点的深度数,为正整数,在XML树从开始深度解析该值时停止使用该映射文件;所述子节点的ID,为正整数,表示节点的ID;所述子节点的父ID,为正整数,此节点的父节点的ID,无父节点时此字段为O;所述子节点的名称,为非空字符串,表不标签的名称;所述子节点的深度数,正整数,相对起始深度的深度数,在XML解析深度数为该值时,进行匹配该节点的尝试;所述子节点的最大值,为正整数,同名标签将在最大值内展开为一条记录的多个字段;所述子节点的类型,为字符串,表示是否为主键,基本数据类型,是否是叶子节点。其中,相同节点可以在不同的映射文件中出现;根据类型为主键的节点在不同映射文件中建立索引。其中,所述解析XML文本,进一步包括以下步骤根据索引文件,判断是否需要进入;根据索引文件,判断是否为不包含其它子节点的叶子节点;根据索引文件,判断是否完成了一条记录。采用本发明的方法,根据XML的Schema和用户的需求等,将一个XML的Schema拆成一个或多个映射文件,每个映射配置文件对应一个关系数据库的表。在第一次解析和读取XML文本时,按照映射文件中的关联关系将XML文本中的数据插入到多个关系数据库的表中,实现了将XML数据保存到关系数据库中的目的,加快了数据的读取访问速度。本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。附图用来提供对本发明的进一步理解,并且构成说明书的一部分,并与本发明的内容和实施例一起,用于解释本发明,并不构成对本发明的限制。在附图中图I为根据本发明的存储XML数据到关系数据库的方法流程图2为根据本发明的标签入口处理流程图3为根据本发明的标签内容处理流程图4为根据本发明的标签出口处理流程图。具体实施例方式以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的实施例仅用于说明和解释本发明,并不用于限定本发明。XML文件是标签和有效数据组成的树型结构,利用XML纯文本文件可以用来存储格式化数据。应用程序通过解析XML的标签,来读取XML的数据,相比通过数据的索引可以快速地定位到需要读写的记录的关系数据库,XML文本在数据读取的性能方面较差,如果需要多次读取同样的XML文本,这种劣势就会更加明显。这种情况下,可以将XML数据保存到关系数据库中,来加快数据的读取访问速度。但由于关系数据库是二维结构,而XML文本是树形结构,因此需要将XML的树形结构的数据映射到关系数据库的二维结构上来。图I为根据本发明的存储XML数据到关系数据库的方法流程图,下面将参考图1,对本发明的存储XML文件数据到关系数据库的方法进行详细描述首先,在步骤101,根据XML的Schema和用户的需求等,将一个XML的Schema拆成一个或多个映射配置文件文件,每个映射配置文件对应一个关系数据库的表。映射配置文件的结构由一个根节点和多个子节点构成,其中,根节点有名称,起始深度,深度数等属性,子节点有ID,父ID,名称,深度,最大值,类型等属性。具体描述如下所示权利要求1.一种存储XML数据到关系数据库的方法,包括以下步骤将ー个XML的Schema拆成ー个或多个映射配置文件,每个映射配置文件对应ー个关系数据库的表;解析XML文本,按照映射配置文件中的关联关系将XML文本中的数据插入到多个关系数据库的表中;通过访问数据库的方式读取XML文本的数据。2.根据权利要求I所述的存储XML数据到关系数据库的方法,其特征在于,所述映射配置文件由一个根节点和多个子节点构成,其中,所述根节点的属性包括名称,起始深度,深度数;所述子节点的属性包括ID,父ID,名称,深度数,最大值,类型。3.根据权利要求2所述的存储XML数据到关系数据库的方法,其特征在干,所述根节点的名称,为非空字符串,用于指定数据库表的名称;所述根节点的起始深度,为正整数,当XML树解析深度为该值时开始使用该映射文件;所述根节点的深度数,为正整数,在XML树从开始深度解析该值时停止使用该映射文件;所述子节点的ID,为正整数,表示节点的ID;所述子节点的父ID,为正整数,此节点的父节点的ID,无父节点时此字段为O;所述子节点的名称,为非空字符串,表不标签的名称;所述子节点的深度数,正整数,相对起始深度的深度数,在XML解析深度数为该值吋,进行匹配该节点的尝试;所述子节点的最大值,为正整数,同名标签将在最大值内展开为一条记录的多个字段;所述子节点的类型,为字符串,表示是否为主键,基本数据类型,是否是叶子节点。4.根据权利要求1-3任一项所述的存储XML数据到关系数据库的方法,其特征在干,相同节点可以在不同的映射文件中出现;根据类型为主键的节点在不同映射文件中建立索引。5.根据权利要求I所述的存储XML数据到关系数据库的方法,其特征在干,所述解析XML文本,进ー步包括以下步骤根据索引文件,判断是否需要进入;根据索引文件,判断是否为不包含其它子节点的叶子节点;根据索引文件,判断是否完成了一条记录。6.根据权利要求5所述的存储XML数据到关系数据库的方法,其特征在于,所述根据索引文件,判断是否需要进入的步骤,进一歩包括以下步骤根据索引文件,判断当前解析深度是否位于映射配置文件要求的深度内,在该映射配置文件里是否存在深度和名称满足的标签;如果解析深度位于映射配置文件要求的深度内,且在该映射配置文件里存在深度和名称满足的标签,则记录所述标签的进入标志,保存所述标签的所有属性,否则停止解析。7.根据权利要求5所述的存储XML数据到关系数据库的方法,其特征在于,所述根据索引文件,判断是否为不包含其它子节点的叶子节点的步骤,进一歩包括以下步骤判断标签是否有标签标志,是否为叶子节点;如果有标签标志,且是叶子节点,则转换保存标签内容的格式,否则停止解析。8.根据权利要求5所述的存储XML数据到关系数据库的方法,其特征在于,所述根据索引文件,判断是否完成了一条记录的步骤,进一歩包括以下步骤根据索引文件,判断是否完成了一条记录;如果完成,则保存完成的记录,清除标签标志,否则停止解析。全文摘要一种存储XML数据到关系数据库的方法,包括以下步骤将一个XML的Schema拆成一个或多个映射配置文件,每个映射配置文件对应一个关系数据库的表;解析XML文本,按照映射配置文件中的关联关系将XML文本中的数据插入到多个关系数据库的表中;通过访问数据库的方式读取XML文本的数据。采用本发明的方法,将XML文件数据存储到关系数据库中,加快数据的读取访问速度。文档编号G06F17/30GK102662997SQ201210067768公开日2012年9月12日申请日期2012年3月15日优先权日2012年3月15日发明者毕松申请人:北京播思软件技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1