版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘 要随着Internet的发展和人们对数据标准性、平台无关性的要求越来越高,XML(Extensible Markup Language)得到了广泛的应用,同时人们对于XML的存储方式提出了更高的要求。本课题意在设计一种将XML数据存入关系数据库中的方法,并按照该方法开发一个XML数据装入关系数据库的软件。本文首先对XML的基本知识进行介绍,随后讨论用关系数据库存储XML数据的原因,并对目前已经提出的一些XML文档在关系数据库中的存储方式进行研究讨论,在此基础上提出一个无模式的XML文档对于关系数据库的存储方法。这个方法将XML数据分为文档、元素、属性、文本四种节点,并将这四种节点映射为数据
2、库中四个关系表。另外将DOM树中的元素节点关系映射为一个数据库关系表,这五个表是本课题中数据库设计的核心。五个表中包含的属性信息要求方便于DOM接口和SAX接口两种方式访问。提出存储方法后,我们将利用这种存储方法开发一个关系数据库中XML数据装入系统。文章后半部分将详细说明该软件的需求分析、设计、具体开发细节以及测试。该软件的测试结果验证了这种存储方法能够有效的将无模式的XML文档存入关系数据库。关键词:关系数据库、XMLAbstractWith the development of Internet and the peoples higher and higher requirement
3、for datas standardization and its independent of platform,XML(extensible markup language) is widely used,in the mean time the higher requirement for the storage of XML data is asked.This research group designed a method to store XML data into RDB(Relational Data Base) of which the technology have be
4、en very mature and widely used.Then we developed an application that can store the XML data into RDB using this method.At first this article will introduce basical knowledge of XML,and then discuss why store XML data using RDB.After that well research and discuss the some methods for storing XML dat
5、a into RDB that have been put forward.Based on them well design a storage method from non-schema XML data to RDB.We classified XML data as four kind of nodes such as Document,Element,Atribute and Text.These four nodes are mapped to four tables in the RDB and we mapped the DOM Tree into a table too.T
6、he five tables is the core of the RDB design.The attribute information involved in the tables is required that both DOM and SAX interface can be easy to get information from the tables.After giving the method we designed well develop an application that can storing the XML data into RDB using that m
7、ethod.Its requirement analyse,design details and test result well be described in the second half part of the article.The test result will show that using the storage method we can storing the non-schema XML data into the RDB effectively.Key words:RDB(Relational Data Base),XML目 录摘 要1Abstract2目 录31 绪
8、 论51.1 课题背景及研究意义51.2 XML知识简介51.2.1 XML51.2.2 DTD和Schema71.2.3 DOM71.2.4 SAX91.3基于关系数据库的XML存储技术101.3.1现存的基于关系数据库的XML存储技术101.3.2一个模式驱动映射实例101.4 作者的工作111.5 本章小结112 无模式映射的设计122.1方案设计要求122.2设计思想122.3方案详细设计122.3.1E-R图(实体集中只画主码)132.3.2 实体集和联系132.3.3 设计方法与策略142.3.4 数据库基本表设计162.3.5数据库优化162.3.6数据字典162.4本章总结18
9、3 关系数据库中XML装入系统193.1 任务概述193.2 设计思想概述193.3 需求规定203.3.1 系统用例图203.3.2 用例事件流203.3.3 开发环境需求203.4 系统设计213.4.1 系统体系结构213.4.2 序列图设计213.4.3 类设计233.4.4 类关系图293.4.5 算法的实现策略303.4.6 异常处理313.5 系统测试323.5.1 系统功能测试323.5.2 测试总结373.5.3 与模式映射XML-RDB装入系统的分析对比373.6 本章小节38结 论39致 谢40参考文献411 绪 论1.1 课题背景及研究意义XML(eXtensible
10、Markup Language)是W3C于1998年提出的数据文件格式标准,它是SGML(Standard Generalize MarkupLanguage)的受限子集,但更简练易用。自被提出以来就由于其标准性、可扩展性和半结构化等特征得到了各方面的关注和使用。随着Internet的高速发展和人们对数据标准性、平台无关性的要求的提高,其应用也更加广泛。目前XML文档的存储方式主要有三种:1.作为普通文件存储于文件系统中2.存储于专门为XML设计的XMLDB中3.存储于关系数据库中第一种方法由于文件系统在组织、管理、检索等各种数据服务功能上的固有不足而基本不被使用。后两种方法各有优缺点,但由于
11、目前关系数据库管理系统在各种应用中仍占主体地位,因此如何更加合理地将XML文档进行转换并存储到关系数据库中具有很大的研究价值。本课题主要研究如何有效的将XML数据存储到关系数据库中,并设计一种可以尽量避免或简化上述问题的存储方法,用此方法开发一个关系数据库中XML数据装入系统以验证该方法的正确性和可行性。1.2 XML知识简介这一节主要介绍XML的基本知识,包括XML概念、文档类型定义(DTD)、XML模式(Schema)、文档对象模型(DOM)、SAX(Simple API for XML)接口等等。1.2.1 XMLXML即为可扩展的标记语言(eXtensible Markup Langu
12、age)。XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。XML是标记语言。理解XML,首先要理解标记。先说说HTML的标记(Markup),通俗地讲,它就是一种用来给文本添加标记的语言。在HTML里每个标志都是有确切含义的。例如,在HTML 中,标签B的含义是要求HTML浏览器将一段文本加粗表示,而标签CENTER的含义是告诉浏览器将这段文本在一行的中间显示。而XML并非象HTML那样,提供了一组事先已经定义好了的标签,而是提供了一个标准,利用这个标准,你可以根据实际需要定义自己的新的置标语言,并为你的这个置标语言规定它特有的一套标签。准确的说,XML是一种源
13、置标语言,它允许你根据它所提供的规则,制定各种各样的置标语言。XML有两个先驱SGML和HTML,这两个语言都是非常成功的标记语言,SGML的全称是标准通用化标记语言,它从80年代初开始使用。正如XML一样,SGML也可用于创建成千上万的标记语言,它为语法置标提供了异常强大的工具,同时具有极好的扩展性,因此在分类和索引数据中非常有用。目前,SGML多用于科技文献和政府办公文件中。SGML 非常之复杂,其复杂程度对于网络上的日常应用简直不可思议。不仅如此,SGML非常昂贵。HTML免费、简单,而且它获得了广泛的支持。它是一个非常简单的SGML语言,可以方便普通人的使用。1996年人们开始致力于描
14、述一个置标语言,它既具有SGML的强大功能和可扩展性,同时又具有HTML的简单性。W3C于1998年2月批准了XML的1.0版本,一个崭新而大有前途的语言诞生了。 XML具有以下优点:1.XML具有自说明性。XML能够应用于各种领域的原因,就是XML具有到目前为止其他方法所不具备的数据描述特点,控制信息不是采用应用软件的独有形式,而是采用谁都可以看得懂的标记形式来表现,所以XML最适合作为数据交换的标准,这也是 XML受人关注的原因。允许各种不同的专业(如音乐、化学、数学等)开发与自己的特定领域有关的标记语言。这就使得该领域中的人们可以交换笔记、数据和信息,而不用担心接收端的人是否有特定的软件
15、来创建数据。2.XML具有通用性。由于XML是非专有的并易于阅读和编写,就使得它成为在不同的应用间交换数据的理想格式.XML使用的是非专有的格式,不受版权、专利、商业秘密或是其他种类的知识产权的限制。XML的功能是非常强大的,同时对于人类或是计算机程序来说,都容易阅读和编写。因而成为交换语言的首选。此外,相对于HTML,XML具有先天的优越性。为了自己的浏览器增加一些特殊的显示效果,HTML加入了一些特殊的标记。日益增多的标签不但使HTML越来越庞大,浏览器的开发越来越复杂,还降低了不同浏览器之间的兼容性。尽管HTML的标签越来越多,其显示力却还远远不够。如果你希望非常精确地表现一些你自己的数
16、据,可能你需要一些现在在HTML中尚不存在的标签。现在HTML内部结构的条理性越来越差。你写的HTML文件,甚至是那些专门的所见即所得工具自动生成的HTML文件,可能在语法上会错误百出,不过没关系,浏览器照样能读它。 现在有了XML,你终于可以自由地制定你自己的置标语言,而不必再念念不忘微软、 Netscape、W3C的首肯了。实际上,现在许多行业、机构都利用XML定义了自己的置标语言。1.2.2 DTD和SchemaDTD是一种保证XML文档格式正确的有效方法,可以比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。一个DTD文档包含:元素的定义规则,元素间关系的定义规则
17、,元素可使用的属性,可使用的实体或符号规则。DTD文件也是一个ASCII的文本文件,后缀名为.dtd。例如:myfile.dtd。由于DTD存在不少缺陷,比方说:DTD是基于正则表达式的,描述能力有限;DTD没有数据类型的支持,在大多数应用环境下能力不足;DTD的约束定义能力不足,无法对XML实例文档作出更细致的语义限制;DTD的结构不够结构化,重用的代价相对较高;DTD并非使用XML作为描述手段,而DTD的构建和访问并没有标准的编程接口,无法使用标准的编程方式进行DTD维护。因此针对这些缺点,设计了XML Schma。XML Schema如同DTD一样是负责定义和描述XML文档的结构和内容模
18、式。它可以定义XML文档中存在哪些元素和元素之间的关系,并且可以定义元素和属性的数据类型。XML Schema基于XML,没有专门的语法;XML可以象其他XML文件一样解析和处理;XML Schema支持一系列的数据类型(int、float、Boolean、date等);XML Schema提供可扩充的数据模型;XML Schema支持综合命名空间;XML Schema支持属性组。1.2.3 DOMDOM Document 是以层次结构组织起来的节点,或信息片段,的集合。这种层次结构允许开发者浏览树来查找特定信息。通常,分析结构需要在完成任何工作之前装入整个文档并且装入层次结构。由于 DOM
19、是基于信息的层次结构,因此它被称为是基于树的。另一方面,DOM 还提供了一个 API,该 API 允许开发者为创建应用程序而在树的任何地方添加、编辑、移动或除去节点。DOM 基本的节点类型XML 中最常见的节点类型:1. Node: DOM 基本的数据类型。 2. Element: 元素3. Attr: 一个元素的属性。 4. Text: 文本 5. Document: 代表整个 XML 文档。一个 Document 对象通常也被称为一棵 DOM 树(根)。 较不常见的节点类型:CData、注释、处理指令和文档片段:1. CData:“字符数据”的缩写 2. 注释:注释包含有关数据的信息,通常
20、应用程序会忽略它们。 3. 处理指令:PI 是专门针对应用程序的信息。 4. 文档片段:为了形成良好的格式,文档只能有一个根元素。有时,必须临时创建几组元素,这些元素不是满足需求所必要的。 下面文档片段:Silver Show Saddle, 16 inch825.001Premium Cinch 49.00#DOCUMENTGOODSITEMNAMEPRICEQTYITEMNAMEPRICEQTY1对应DOM树(元素节点)如图:文档片段的DOM树示例图1.2.4 SAX读取和操纵 XML 文件的标准方法是 DOM(“文档对象模型”)。遗憾的是,这种方法需要读取整个文件并将它存储到树结构中,因
21、而效率不高、缓慢,并且会过度使用资源。对于极其大的文档,装入整个文档并对该文档进行解析会很慢且占用大量资源,所以要用其它方式来处理数据。一些基于事件的模型,如 Simple API for XML(SAX),是工作在数据流之上,在数据流经过时对其进行处理。SAX 允许正在读取文档时处理该文档,这避免了在采取操作之前需要等待存储文档的所有内容,但它不允许开发者实际更改原始文档中的数据SAX 是由 XML-DEV 邮件列表的成员开发的,Java 版本由 David Megginson 维护。他们的目的是提供一种更自然的方法来使用 XML,这种方法不会涉及到使用 DOM 的那种开销。结果是基于事件的
22、 API。解析器将事件(譬如,元素的开始或结束)发送给处理信息的事件处理程序。然后,应用程序自己可以处理数据。虽然原始文档保持不变,但 SAX 提供了操纵数据的方法,然后会将该方法导向另一个过程或文档。对于 SAX,没有官方的标准;万维网(W3C)或其它官方组织不维护 SAX,但在 XML 社区中,它是一个事实上的标准。SAX 分析经过其的 XML 流。考虑以下 XML 代码片断:UNIXcolor一般情况下,SAX 处理器分析这段代码将生成以下事件:Start documentStart element (samples)Characters (white space)Start eleme
23、nt (server)Characters (UNIX)End element (server)Characters (white space)Start element (monitor)Characters (color)End element (monitor)Characters (white space)End element (samples)1.3 基于关系数据库的XML存储技术本节将研究并讨论现有的基于关系数据库的XML存储方法。1.3.1 现存的基于关系数据库的XML存储技术基于关系数据库的XML存储技术的核心是XML与关系数据库之间的数据映射技术,目前存在多种映射方法,根据
24、是否使用XML模式可分为两类:1. 模式驱动映射2. 无模式映射XML模式定义了XML文档的词汇表、逻辑结构和允许值,利用模式可以对XML实例文件的有效性进行验证。模式驱动映射是以XML模式为基础的映射,包括DTD(文档类型定义)和XML Schema两种方式,其广泛适用于电子商务、数据交换和系统集成等领域的面向数据处理的XML文档,如产品订单、发票、时刻表等。他的优点是模式驱动映射的过程中不易丢失结构信息,能较好的保证数据的正确性和完整性。现有的模式驱动映射方法很多,下一节将通过一个实例来介绍模式驱动映射是如何实现的。由于模式驱动映射要对模式进行解析,其转换过程要比无模式映射复杂的多。而且在
25、实际应用中,尤其是广阔的互联网中,大多数的XML文档都没有DTD或Schema,或者DTD和Schema不易随文档保存,这是模式驱动映射面临的一个无法解决的困难,因此模式驱动映射适用于那些已经发展的比较规范的领域,而无模式映射技术的应用更为广泛。因此作者最终选择设计一种无模式映射来完成本课题的任务,这将在文章的第二章中详细说明。1.3.2 一个模式驱动映射实例这个实例的映射方法叫做对象-关系映射。首先将XML模式转化为对象模型,然后再将对象模型映射为关系模型。在讨论之前我们先介绍两个概念:简单元素:只包含文本,不包含属性和嵌套元素的元素复杂元素:有属性或包含嵌套元素的元素下面讨论基于对象-关系
26、模型的XML-RDB的基本映射原理,为了描述简单,XML模式采用DTD进行定义。1)设有如下DTD:模式对象的转化:复杂元素A类A简单元素B、CA的成员变量对象关系的映射类A表AB、C表A中的列B、C综上创建关系:RA(PK_A,B,C),PK_A是RA的主键(它是自动生成的),列B和C的值是他们的PCDATA。2)设有如下DTD:这里采用外键捕获元素A和C及A和B之间的父子关系,因此可创建关系RA(PK_A,D),RB(PK_B,FK_AB,B)及RC(PK_C,FK_AC,E),其中FK_AB和FK_AC分别是RB和RC关于RA的外键。RB的主键是(PK_B,FK_AB), RC的主键是(
27、PK_C,FK_AC)。根据关系理论:在这个DTD中,A只允许出现一次,所以A和C是1:1的关系,FK_AC可建立在RA和RC任一关系中(此处建立在RC中);B可出现多次,即A和B是1:N的关系,FK_AB应建立在RB中。假如A也可以出现多次,即A和B为M:N的关系,则可创建关系RAB(FK_A,FK_B),其中FK_A和FK_B分别对应RA和RB的PK_A和PK_B。3)对于复杂元素的属性和文本,处理方法与简单元素相同,作为复杂元素的属性列处理。1.4 作者的工作本文工作就是设计一个XML数据到关系数据库的无模式映射方案,这将在文章的第二部分详细讲解。然后利用这个方案开发一个关系数据库中XM
28、L数据装入系统,并利用这个软件测试该方案的有效性和性能,这是第三部分要叙述的内容。1.5 本章小结本章阐述了课题背景及其研究意义,讲解了XML的基本概念和知识,研究讨论了现今基于关系数据库XML存储的主要方法并制定了下面需要完成的任务及相应的研究思路。2 无模式映射的设计2.1方案设计要求设计必须满足以下要求:1. 能够将无模式的XML数据按一定的结构存入关系表中2. 数据库设计要支持DOM和SAX两种接口访问3. 易于实现关系数据库到XML的反向转换4. 具有跨平台性2.2设计思想将XML文档中的数据信息全部存入关系表是最基本的要求,要满足这个要求,就要分析文档中的基本数据类型(元素,属性,
29、文本等),将这些类型的节点映射为数据库实体集。为了支持DOM和SAX两种接口访问,就需要分析这两种接口在访问XML文档时需要什么样的信息,这些信息一定要设计到数据库中。比方说,DOM接口需要节点的父子关系,需要兄弟元素节点的顺序,需要节点的层数。SAX接口需要元素的起始位置和结束位置,这些信息都需要存到数据库中,才可以方便两个接口对数据库的访问。综上所述,数据库设计思路就是将文档中不同类型的节点作为数据库实体集,节点之间的关系作为联系进行初步设计,然后再进行数据库优化。详细设计方案将在下一节介绍。2.3方案详细设计根据XML数据节点类型,分别将文档节点、元素节点、属性节点和文本节点映射为四个表
30、:DOCUMENT,ELEMENT,ATTRIBUTE,TEXT。另外将元素节点之间的关系(父子,兄弟)映射为一张全局关系表FULLRELATION。对于CDATA数据,将其看作TEXT数据处理,存入TEXT表中。而注释语句将被忽略。2.3.1 E-R图(实体集中只画主码)ATTRIBUTEbelongDOCIDATTIDELEIDTEXTDOCUMENTELEMENTbelongbelongbeparentDOCIDDOCIDTEXTIDDOCID数据库E-R图2.3.2 实体集和联系1. DOCUMENT实体集:文档主体属性:DOCID:DOCUMENT唯一标识URI:文档路径VERSIO
31、N:文档版本ENCODING:文档的字符码格式2. ELEMENT实体集:元素主体属性:ELEID:元素的文档序(深度遍历DOM树的元素序号)DOCID:元素所在文档的IDNAME:元素名称BEGIN:元素在文档中的起始位置END:元素在文档中的结束位置SEQUENCE:同层同父亲元素的顺序LAYER:元素所在层3. ATTRIBUTE实体集:属性主体ATTID:属性唯一标识ELEID:属性所属元素IDDOCID:属性所属文档IDNAME:属性名称VALUE属性值4. TEXT实体集:文本主体TEXTID:文本唯一标识ELEID:文本所属元素IDDOCID:文本所属文档IDCONTENT:文本
32、内容5. 父子联系:元素之间的父子关系多个元素对应一个父亲属性:ELEID:元素IDDOCID:元素所在文档IDPARENTID:元素父亲ID2.3.3 设计方法与策略四个实体集中最重要且最复杂的就是元素(ELEMENT)实体集,由于存储要便于DOM和SAX两种接口访问,因此需要为元素添加除名称之外的属性,下面分别说明这些属性的设计思路。BEGIN和END:元素在文档中的起始和结束位置,这是为了实现SAX接口能过顺序访问文档而提供的属性,例如下面的文档,我们将在元素的开始标志的左边括号中标出Begin数,在元素的结束标志的右边括号中标出END数。(1) (2) (3)TCP/IP Illust
33、rated(4) (5)Bill(6) (7)Addison-Wesley(8) (9)65.95(10) (11) (12) (13)Advanced Programming in the Unix environment(14) (15)Tom(16) (17)Addison-Wesley(18) (19)65.95(20) (21)(22) (23) Data on the Web(24) (25)Tony(26) (27) Addison-Wesley (28) (29)50(30) (31)(32)ELEID、SEQUENCE、LAYER:这三个属性是为了描述DOM树结构而设计的,E
34、LEID表示元素的文档序,SEQUENCE表示同层同父亲节点的元素的顺序,LAYER表示元素所在层,它们与父子联系中的PARENTID共同为DOM接口的访问服务。文档序指在DOM树中从左至右深度遍历元素节点时元素的序号,对于下面的DOM数,将元素的文档序标记在节点旁边:#DOCUMENTGOODSITEMNAMEPRICEQTYITEMNAMEPRICEQTY123456789文档序示例图为了更加清晰的区分DOM接口和SAX接口的访问,作者在设计数据库基本表时将BEGIN和END属性设置在ELEMENT表中,而将SEQUENCE、LAYER和PARENTID属性设置在FULLRELATION关
35、系表中,这样SAX接口访问ELEMENT表,而DOM接口访问FULLRELATION表。2.3.4 数据库基本表设计1. 文档表:DOCUMENT(DOCID,URI,VERSION,ENCODING)数据约束:唯一:URI2. 元素表:ELEMENT(ELEID,DOCID,NAME,BEGIN,END)数据约束:外键:DOCID3. 属性表:ATTRIBUTE(ATTID,DOCID,ELEID,NAME,VALUE)数据约束:唯一:(DOCID,ELEID)外键:ELEMENT 的主键(DOCID,ELEID)4. 文本表:TEXT(TEXTID,DOCID,ELEID,CONTENT)
36、数据约束:唯一:(DOCID,ELEID)外键:ELEMENT 的主键(DOCID,ELEID)5. 全局关系表:FULLRELATION(ELEID,DOCID,LAYER,SEQUENCE,PARENTID)数据约束:外键:ELEMENT 的主键(DOCID,ELEID)2.3.5数据库优化根据查询使用频率为数据库添加索引:Document:(URI)Element:(DocID EleID)Element (Begin DocID EleID)Element (End DocID EleID)Attribute:(DocID EleID)Text:(DocID EleID)FullRel
37、ation:(DocID EleID)2.3.6数据字典DOCUMENT表:属性数据类型数据长度约束DOCIDNUMBER10主键URIVARCHAR50唯一VERSIONVARCHAR50ENCODINGVARCHAR50ELEMENT表:属性数据类型数据长度约束ELEIDNUMBER10主键DOCIDNUMBER10外键NAMEVARCHAR50BEGINNUMBER10ENDNUMBER10ATTRIBUTE表:属性数据类型数据长度约束ATTIDNUMBER10主键DOCIDNUMBER10唯一外键ELEIDNUMBER10NAMEVARCHAR50VALUEVARCHAR50TEXT表
38、:属性数据类型数据长度约束TEXTIDNUMBER10主键DOCIDNUMBER10唯一外键ELEIDNUMBER10CONTENTVARCHAR500FULLRELATION表:属性数据类型数据长度约束ELEIDNUMBER10主键DOCIDNUMBER10外键LAYERNUMBER10SEQUENCENUMBER10PARENTIDNUMBER102.4 本章总结本章详细描述了作者为XML-RDB的无模式映射设计的方案以及如此设计的原因。下一章将介绍作者利用此方案开发的关系数据库中XML数据装入系统。3 关系数据库中XML装入系统3.1 任务概述本次开发任务是编写一个面向用户的关系数据库中
39、XML数据装入系统,用户在软件的界面中使用XML数据装入功能从而将本地硬盘中的XML文档装入ORACLE数据库服务器中。其中的XML-RDB数据映射部分要用上一章设计的方法设计数据库,并通过对软件的测试验证该方法的性能。3.2 设计思想概述从用户的角度出发分析,用户需要一个易于操作的界面,因此界面是联系用户与应用程序的桥梁,它是从用户的角度出发系统结构的第一层。界面得到用户请求后要通知后台程序处理,这种程序处理模块形成了系统结构的第二层,程序处理模块处理了用户的输入后要将结果存入数据库中,并将数据库装入情况发送给界面,由界面通知用户数据库的装入结果。因此他是内存中的数据与数据库之间的桥梁。综上
40、所述,作者认为采用面向对象的程序设计方法比较适合此系统的设计。可以将系统的界面模块设计为界面类,程序处理模块设计为控制类,内存中的一些中间结果设计为存储类。这样就形成了界面类对象接收输入信息,由存储类对象暂存,这些信息被控制类对象取出、运算,最终得到的结果再存入存储类对象,再由控制类对象将这些结果存入数据库中。详细设计情况将在下面几节描述。3.3 需求规定3.3.1 系统用例图设计系统用例图3.3.2 用例事件流用户装入文件事件流:1 用户按装入文件按钮,用例开始。2 系统提示用户选择文件。3 用户选择文件并提交。A 若文件读取失败系统提示用户并返回14 系统读取并解析文件,将解析结果存入数据
41、库。A 若存入失败系统提示用户并返回15系统提示用户存储成功,用例结束。用户查看帮助时间流:1 用户按帮助按钮,用例开始。2 系统显示帮助提示3.3.3 开发环境需求编程语言:JAVA编译环境:Eclipse数据库环境:Oracle设计作图工具:Ralation Rose20033.4 系统设计3.4.1 系统体系结构XML装入系统数据库XML文件解析装入系统体系结构图3.4.2 序列图设计用户装入文件事件流的序列图设计:1角色:用户,数据库2对象:界面,文件对象,文档对象,元素对象,属性对象,文本对象,控制对象,元素链表,属性链表,文本链表3交互消息:(1) 用户进入界面选择装入文件功能(2
42、) 界面提示用户选择文件(3) 用户选择一个文件并提交(4) 界面创建一个文件对象(5) 控制对象解析文件(利用DOM)(6) 控制对象创建文档对象,元素对象表,属性对象表,文本对象表(7) 控制对象将解析出来的元素对象存入元素链表(8) 控制对象将解析出来的属性对象存入属性链表(9) 控制对象将解析出来的文本对象存入文本链表(10) 控制对象将存储在内存中的对象存入数据库(11) 控制对象向界面发消息通知存储是否成功(12) 界面向用户显示存储是否成功数据装入的序列图3.4.3 类设计 1界面类:界面利用Javax.swing包中的类设计2存储单元类:存储单元的各类只实现基本的存储功能,不含
43、除set和get以外的放法。(1)文件类:调用java.io.file类存储文件(2)文档类(MyDocument):对应数据库中DOCUMENT表属性说明:String uri:文档路径String version:文档版本String encoding:字符码格式方法说明:每个属性有get和set方法void ToString():打印对象信息,供测试使用MyDocument类(3)元素类(MyElement):对应数据库中ELEMENT表和FULLRELATION表属性说明:String name:元素名int begin:元素在文档中的起始位置int end:元素在文档中的结束位置in
44、t layer:元素所在层int sequence:同层元素位置MyElement parent:元素父节点MyDocument doc:元素所在文档int order:文档序int hash:对应的DOM树中Element类对象的hash值 方法说明:每个属性有get和set方法void ToString():打印对象信息,供测试使用MyElement类 (4)属性类(MyAttr):对应数据库中的ATTRIBUTE类属性说明:String name:属性名称String value:属性值MyElement elem:所属元素MyDocument doc:所在文档方法说明:每个属性有get
45、和set方法void ToString():打印对象信息,供测试使用 MyAttr类(5)文本类(MyText):对应数据库中的TEXT表属性说明:String content:文档内容 MyElement elem:所属元素 MyDocument doc:所属文档方法说明:每个属性有get和set方法void ToString():打印对象信息,供测试使用MyText类(6)链表类:调用java.util.LinkedList类来存储元素表,属性表,文本表3控制单元:(1)DomControl:此类为程序中最重要控制类,所有核心算法都在这个类中。它的功能是将解析XML文件,生成DOM树,通过
46、对树操作得到需要的节点信息并将它们存入链表中,以作为后面数据存储的输入。属性:org.w3c.dom.Node doc:树根节点DbControl dbc:数据库控制类对象MyDocument:mydoc:文档对象LinkedList myElemList:元素链表LinkedList myAttrList:属性链表LinkedList myTextList:文本链表方法:boolean createDom(String uri)此方法以文档路径(URI)为参数解析XML文件,创建dom树,将树的根节点赋给属性doc。解析成功返回true,失败返回false。void deepVisit()此
47、方法通过对DOM树深度遍历得到元素的文档序、begin、end信息,并将这些信息存到相应的存储单元中。void visit()此方法层遍历dom树,将得到的相应的节点信息存入创建的存储单元对象中,在调用deepVisit()方法深度遍历树,再将相应的信息存入这些存储单元对象中,最后把这些对象分别存入属性mydoc,myElementList,myAttrList,myTextList。boolean hasWord(String s)此方法判断参数s是否含有非空格和换行符的其他字符,又返回true,没有返回false。MyDocument getMyDocument(org.w3c.dom.N
48、ode doc)此方法将Dom树中的文档节点转换为Mydocument对象MyElement getMyElement(org.w3c.dom.Node element)此方法将Dom树中的元素节点转换为MyElement对象MyAttr getMyAttr(org.w3c.dom.Node attr)此方法将Dom树中的属性节点转换为MyAttr对象MyText getMyText(org.w3c.dom.Node text)此方法将Dom树中的文本节点转换为MyAttr对象DomControl类(2)DBControl(数据库控制类)属性:Connect con:数据库连接对象Statem
49、ent stmt:执行语句ResultSet rs:结果集方法:boolean openDB()打开数据库boolean close()关闭数据库boolean proofDocumentUri(String uri)验证文档是否存在,存在返回true,不存在返回falseint queryMaxID(String column,String table)查找表table中的列column的最大IDint queryDocumentID(String uri)查找文档的DOCID值boolean insertDoc(MyDocument doc)在文档表中插入文档boolean insertElem(MyElement elem)在元素表中插入元素boolean ins
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四年级数学(四则混合运算带括号)计算题专项练习与答案
- 绿植租摆协议书(2篇)
- 南京工业大学浦江学院《移动通信技术产品及物联网应用》2022-2023学年第一学期期末试卷
- 南京工业大学浦江学院《社会企业》2022-2023学年第一学期期末试卷
- 分数的产生说课稿
- 蹲踞式跳远说课稿
- 南京工业大学浦江学院《计算机网络课程设计》2023-2024学年期末试卷
- 《线段的垂直平分线》说课稿
- 幼儿课件图画教学课件
- 南京工业大学《虚拟仪器设计》2023-2024学年第一学期期末试卷
- 砌筑工-技能评分记录表3
- 司索工安全操作规程
- 人教版数学五年级上册课本习题(题目)
- 钢筋合格证(共6页)
- BIM技术全过程工程管理及应用策划方案
- 弯扭构件制作工艺方案(共22页)
- 水利工程填塘固基、堤身加固施工方法
- 中医针灸的骨边穴怎样定位
- 人教版八年级上册英语单词表默写版(直接打印)
- 电脱水、电脱盐讲解
- 违约损失率(LGD)研究
评论
0/150
提交评论