




已阅读5页,还剩69页未读, 继续免费阅读
(计算机系统结构专业论文)基于xml和多层结构理论的营养咨询系统的设计与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
山东大学硕士学位论文 摘要 借助计算机网络提供的营养咨询服务方便、快捷,有利于指导人们的饮食习惯。 营养咨询系统能够根据人们的个人情况提供科学的食谱,并且评价食谱。本文的 主要内容是关于一个基于多层c s 结构和x m l 的营养咨询系统的模型设计和具体 实现的过程和技术细节。首先简单介绍了系统的功能,然后提出了系统的设计模 型,并给出了用v i s u a lc + + 来实现的类视图,简单总结了系统的特点。接下来, 分别重点介绍了几个重要模块的具体设计思路和实现过程。这些模块包括:通讯 模块、数据存储模块、数据存取模块、数据分析模块。在这些模块中贯穿着对x m l 技术的应用和研究,而它们从整体上又体现着多层c s 结构的设计理念。最后对 所做的工作进行了总结并对技术的发展进行了展望。 引入x m l 技术有五个好处: 1 从编程人员的角度考虑,使用x m l 制定协议不但减少了他们阅读协议的困 难,尤其是复杂的协议,因为x m l 具有很好的可读性,而且解决了组件连 接中的一些问题。 2 从用户的角度考虑,引入x m l 使系统易于使用。在客户端使用x m l 代替数 据库存储数掘,能够减少为支持数据库要做的工作。 3 从分布式系统的性能的角度考虑,引入x m l 能够提高系统的性能。从服务 器传送过来的数据存储在x m l 文件里,当用户再次需要的时候,可以从本 地读取,而不必再次访问服务器端,这样就减少了响应用户请求的时日j 。 4 从多层结构理论的发展来看,引入x m l 解决了层与层之白j 连接方面的一些 问题,促进了多层结构理论的应用和发展。 5 从x m l 的应用来看,x m l 技术在本课题中显示出了强大的优势,其应用和 发展得n t 促进。x m l 技术之所以能够解决组件连接或着层于层之问的连 接中的一些问题,如参数顺序、参数值的映射和协议转换,是因为x m l 能 够保持数掘独立性,数据的内容和格式相分离,而且数掘的内容被标记, 数据的查找容易实现。 v i s u a lc + + 是一个功能强大的可视化编程环境,它提供了一些软件基础设施帮 山东大学硕士学位论文 助了完成本系统的实现。具体来说,文档视图模版功能完善、易学易用,m f c 提 供了通讯和数据处理功能,c + + 编程环境实现了多层结构的设计,支持c o m 方便了 d o m 的使用和对x m l 的解析。 关键词:x m l 多层结构理论d o ms a x n 山东大学硕士学位论文 a b s t r a c t an u t r i t i o nc o n s u l t i n gs e r v i c ep r o v i d e db yu s i n gc o m p u t e rn e t w o r ki s c o n v e n i e n tt ou s ea n di su s e f u lt og u i d ep e o p l e sd i e t a r yh a b i t s i tc a n p r o v i d eg o o dr e c i p e sa c c o r d i n gt op e o p l e sp e r s o n a ls i t u a t i o n ,s u c ha s a g e ,a n dg i v es u g g e s t i o n so np e o p l e sr e c i p e s 。t h i sp a p e ri sa b o u tt h e d e s i g nm o d e la n dt h ew a yo fr e a l i z i n ga n u t r i t i o nc o n s u l t i n gs y s t e m 。f i r s t , i n t r o d u c et h ef u n c t i o no ft h es y s t e m 。s e c o n d ,p u tf o r w a r dt h ed e s i g nm o d e l a n dt h ec l a s sv i e wb a s e do nv i s u a lc + + 。a n ds u m m a r i z et h ef e a t u r e so ft h e s y s t e m 。n e x t ,i n t r o d u c es e v e r a li m p o r t a n tp a r t sb yg i v i n gt h et h i n k i n go f d e s i g na n dt h ep r o c e s so fr e a l i z i n gi t t h e s ep a r t sa r ec o m m u n i c a t i o np a r t 、 d a t as t o r a g ep a r t 、d a t ao p e r a t i o np a r ta n dd a t aa n a l y z i n gp a r t x m li su s e d i na l lt h ep a r t s 。a n dt h em u l t i t i e rt h e o r yi sa l s oa p p l l e di nt h es y s t e m 。 f i n a ll y ,s u m m a r i z et h ew o r ka n dg i v es o m ep r o s p e c t st ot h ed e v e l o p m e n to f x m l 。 i n t r o d u c i n gx m lt ot h es y s t e mh a sf i v ea d v a n t a g e s : 1 r o mt h ec o n s i d e r a t i o no fw r i t i n gp r o g r a m s ,u s i n gx m lt o m a k e a g r e e m e n t s c a nn o to n l yr e d u c et h ed i f f i c u l t i e so fr e a d i n g a g r e e m e n t s ,e s p e c i a l l yc o m p l i c a t e da g r e e m e n t s ,b e c a u s e x m li s r e a d a b l e ,b u ta l s or e s o l v es o m ep r o b l e m sa b o u tc o m p o n e n t sc o n n e c t i n g 2 f r o mt h ec o n s i d e r a t i o no fu s e r s ,u s i n gx m lm a k et h es y s t e me a s yt o u s e 。b e c a u s es t o r i n gd a t ab yu s i n gx m ld o c u m e n t si n s t e a do fu s i n g d a t a b a s ec a nr e d u c et h ew o r ko fs u p p o r t i n gd a t a b a s e 3 f r o mt h ec o n s i d e r a t i o no fad i s t r i b u t e ds y s t e m sp e r f o r m a n c e ,u s i n g x m lc a ni m p r o v et h ep e r f o r m a n c e 。t h ed a t af r o mt h es e r v e ri ss t o r e d i nx m ld o c u m e n t s ,s ow h e nt h ed a t ai sn e e d e da g a i n ,t h ew o r ko fv i s i t i n g t h es e r v e ri sr e d u c e d ,a n dt h et i m eo fr e s p o n s ei ss a v e d 。 4 f r o mt h ed e v e l o p m e n to ft h em u l t i t i e rt h e o r y ,u s i n gx m lc a nr e s o l v e i l l 山东大学硕士学位论文 s o m ep r o b l e m si nc o n n e c t i n gd i f f e r e n tt i e r sa n di m p r o v et h ea p p l y i n g a n dd e v e l o p i n g 。 5 f r o mt h ea p p l y i n go ft h ex m lt e c h n o l o g i e s ,x m lt e c h n o l o g i e sh a v es h o w n g r e a ta d v a n t a g e sa n d t h ea p p l y i n ga n dd e v e l o p i n gh a v eb e e ni m p r o v e d 。 t h er e a s o nw h yx m lc a nr e s o l v es o m ep r o b l e m si nc o n n e c t i n gd i f f e r e n t c o m p o n e n t so rc o n n e c t i n gd i f f e r e n tt i e r si s ,x m lh a st h ep r o p e r t y o f d a t ai n d e p e n d e n t ,t h ec o n t e n ta n df o r m a ta r es e p a r a t e d ,t h ec o n t e n t o ft h ed a t ai sl a b l e d ,a n dt h ef i n d i n go ft h ed a t ai se a s yt or e a l i z e v i s u a lc + + i sap o w e r f u la n dv i s u a lp r o g r a n 仰i n ge n v i r o n m e n t a n di t p r o v i d e ss o m es o f t w a r ei n f r a s t r u c t u r e st oh e l pr e a l i z et h i ss y s t e m 。t ob e s p e c i f i c ,t h ed o c v i e wt e m p l a t eh a sg o o df u n c t i o n sa n di se a s yt os t u d y a n du s e ,i t f cp r o v i d e sf u n c t i o n so fc o m m u n i c a t i n ga n dd a t ap r o c e s s i n g , c + + p r o g r a m m i n ge n v i r o n m e n th e l p sr e a l i z et h ed e s i g no fm u l t it i e r s ,a n d s u p p o r t i n gc o mm a k e st h eu s eo fd o ma n dp a r s i n go fx m lc o n v e n i e n t 。 k e y w o r d s :x m lm u l t i - t i e rt h e o r yd o ms a x i v 原创性声明和关于论文使用授权的说明 原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独 立进行研究所取得的成果。除文中已经注明引用的内容外,本论文不 包含任何其他个人或集体已经发表或撰写过的科研成果。对本文的研 究作出重要贡献的个人和集体,均已在文中以明确方式标明。本声明 的法律责任由本人承担。 论文作者签名:墼益 日期:塑三- 生! 关于学位论文使用授权的声明 本人完全了解山尔人学有关保留、使用学位论文的规定,同意学校保留或向国家有 关部门或机构送交论文的复印件和电子版,允许论文被卉阅利借阅:本人授权山尔人学可 以将本乎位论文的全部或部分内容编入有关数据库进行检索,可以采j _ j 影印、缩印或其他 复制手段保存沦文和汇编本学位论文。 ( 保密论文在解密后应遵守此规定) 论文作者签名:垂虹导师签名:盟日期: 2 k - js ! 功 山东大学硕士学位论文 第一章绪论 1 1 课题的背景和意义 随着人们生活水平的提高,急需建立一个营养咨询系统来指导人们的饮食,包 括提供食谱和评价食谱等功能。 本课题设计并实现了一个基于x m l “1 和多层结构理论嘲的跨i n t e r n e t 的营养咨 询系统。从理论意义上看,x m l 具有开放性好和可扩展性好的特性,它的使用不但 使多层结构更易于实现,而且使系统更容易扩展,从而促进了分布式。1 理论的发展。 从应用价值上看,在客户端使用x m l 代替数掘库,客户端的配置环境不必支持数 掘库,从而提高了系统的适应性,也方便了用户的使用,这也意味着会有更多的 人能够享受到营养咨询服务。 1 2 本文的组织结构 本文首先介绍了课题的背景和意义,然后介绍了x m l 和多层结构理论。接下来 给出了系统的整体设计和实现,然后介绍了四个关键模块的设计。最后给出了五 个关键技术的实现。 山东大学硕士学位论文 第二章x m l 和多层结构理论介绍 2 1 多层结构理论 多层体系结构的提出源于两层c s 体系结构。两层c l s 体系结构具有客户端 和服务器端两层,客户端和数据库服务器直接相连,客户端直接访问数据库中的 数据资源。这种结构不利于数据资源的安全,容易造成数据库的数据泄露和数据 库服务器的运行不稳定。同时因为业务逻辑放在客户端,所以这种结构常使客户 端臃肿不堪。 针对这些问题,三层c s 体系结构被提了出来。在三层结构中,业务逻辑层 被独立地分离出来放在服务器端,成为客户端和数据库服务器沟通的桥梁,这样 不但能够确保数据资源的安全,而且使客户端减肥,业务逻辑层被更多的客户端 共享。后来由于业务逻辑的增长和不同的应用系统对功能的需求的不同,出现了 更细化的分层,形成了多层体系结构。多层结构与两层结构或三层结构相比具有 易维护的优点。 在本系统中,把商务逻辑层和s q l 语句转换层从用户层中分离出束符合将软 件模块化的思想。每一层都提供了标准的接口,使用和维护都很方便。当商务逻 辑层发生变化时,只需对商务逻辑层进行修改,用户层和s q l 语句转换层不必改 动。x m l 具有可读性好和易于使用的优点,它的引入使系统具有更好的开放性和可 扩展性。 2 2x m l 2 2 1x m l 简介 ( 1 ) 什么是x m l ? x m l ( e x t e n s i b l em a r k u pl a n g u a g e ) 不是一个陌生的概念,它的起源和发展 跟g m l 、s g m l 、h t m l 、x h t m l 等概念紧密地联系在一起。x m l 是具有扩展性的元语 言,以x m l 规范为标准又派生出一些新的语言,包括m a t h m l 、s v g 、e b x m l 、c m l 、 s m i l 、o e b 、w m l 、f p m l 、s o a p 、w s d l 、) 【m l r p c 、x t h m l 等等。这些语言有的是应 用于专门的领域,象m a t h m l 用于数学领域,e b x m l 用于电子商务领域,w m l 用于 山东大学硕士学位论文 无线传输领域,有的是和某些技术结合在一起,象s o a p 和w s d l 都是w e b 服务技 术的核心协议,而x m l r p c 则是x m l 与传统技术r p c ( 远程过程调用) 相结合的实 例。 ( 2 ) x m l 的发展 x m l 已广泛地应用于各种应用程序,它的发展不是一蹴而就的。从为各个行业 定义x m l 词汇,到为w e b 中数据传送协议定义x m l 词汇;从最初的用于纵向行业 应用程序,到后来的横向行业应用程序,再到与w e b 协议的结合。它的应用越来 越广泛,越来越深入。x m l 的起源和发展“1 如图2 - i 和2 - 2 所示。 g m l i s g m l x m lh t m l i 孓_ 图2 - ix m l 起源 为w e b 中数据传送 协议定义x m l 词汇 圈一酐圈 图2 2x m l 的发展 ( 3 ) x m l 涉及的技术 x m l 涉及一个很大的技术系列”3 ,包括x s l f o 、x s l t 、x m ls c h e m a ( x m l 大纲) 、 x p a t h 、x l i n k 、x q u e r y 、d o m 、s a x 等,涉及数据的格式化、显示、类型检查,搜 索、查询、操作等。这些技术都是围绕在x m l 核心周围的技术家族中的一员,它 们已经广泛地在计算机软件技术当中应用,x m l 核心是x m l 和名称空间。它们之间 的关系可以用图2 3 来表示。 山东大学硕士学位论文 图2 3x m l 核心和x m l 周围的技术 ( 4 ) x m l 的特点 x m l 的一大优点是数据独立性“1 ,这是它的力量之源。x m l 技术是数掘处理的 技术,它引起了数据处理的革命。以前的数据和特定的应用密切相关,为了应用 的实施需要制定专门的数据格式,这种数据格式是和应用程序紧密相关的,象电 子商务中的e d i ( 电子数据交换) 。要想在其它的应用中引入这些数据却不是件容 易的事,因为数据是专用的,其它的应用并不知道数掘的格式是怎样的,以及如 何处理它们。采用x m l 格式,数掘的内容与表现形式和特定的应用相分离,显示 出易用和灵活的特点。 x m l 不仅可以描述和存取数据,而且可以移动数据0 1 。x m l 及其技术是为描述 和存储数据而设计的,数据可能以x m l 文档的形式存在,也可能以x m l 数据流的 形式存在,x m l 文档把数据固定地存储在存储器中,而承载着数据的x m l 数据流可 以移动数据,即在传输协议的帮助下将数据从一个地方传输到另一个地方,因而 x m l 及其技术可以用到通讯当中去。在通讯中使用x m l 技术,需要通讯双方订立一 个x m l 文档结构或者称作x m l 模式,这就好比订立了一个通讯规约,有了它通讯 双方就可以知道数据的结构和含义,从而可以方便地存取数据。x m l 作为一种标记 语言,足以定义结构复杂的数据,结构化的文档不仅是可读的,而且计算机程序 操作处理也方便。 x m l 与操作系统、编程语言或传输协议无关旧,这为构建自由的数据传输提供 了一种途径,也就是说无论是异构还是异构应用之间的数据交流都更方便了在 4 山东大学硕士学位论文 通讯占基础地位的分布式计算机系统中,特别是异构的分布式计算机系统( h d c s ) 中,x m l 技术大显身手。随着计算机软硬件技术的飞速发展,同构的分布式系统必 然演化成异构的分布式系统,异构性成为阻碍分布式系统中资源共享的困难之一, 急需一个标准的数据交换格式来实现异构系统中资源的共享,x m l 足以担当此重 任。 x m l 作为一种描述和存储数据的格式不会过时,或者说x m l 具有保值性嘲。当 今计算机技术的发展是日新月异的,保存数据为某种格式的时候,不得不考虑这 种格式与其它技术的兼容性,也就是说这种格式的生存周期是多长。如果该格式 产生不久就会被淘汰,那么它不会被广泛地采用,只有生存周期长的技术j 。会被 广泛应用。x m l 之所以被广泛应用到各行各业,之所以促进了数掘的交换和共享, 和它的保值性有很大的关系。 2 2 2 解析x m l 当前使用的处理x m l 的解析器支持两种接口:d o m 和s a x “1 。它们位于x m l 解 析器和应用程序之问,使丌发人员可以避开复杂的x m l 语法。如图2 4 所示。实 现了s a x 和d o m 的解析器的产品有a p a c h e 的x e r c e s ,o r a c l e 的x m lp a r s e r 、 m i c r o s o f t 的m s x m l 等等。s u n 公司的j a x p 。 卜 _ 冈 l 文档l il 图2 4d o m 和s a x 工作原理图“3 ( 1 ) e 0 m a ) 什么是d o m ? d o m 旧( d o c u m e n to b j e c tm o d e l ,文档对象模型) 是由w 3 c ( w o r l dw i d ew e b c o n s o r t i u m ,万维网联盟) 提出的用于处理结构化文档的语言和平台中立的编程接 口规范。结构化文档主要是x m l 文档和h t m l 文档。d o m 使用文档树来表示结构化 文档,使用d o m 提供的属性和方法可以访问树上的节点即文档数据。根据d o m 规 范m ,d o m 被组织为3 个层:l e v e l l 、l e v e l 2 和l e v e l 3 。l e v e l 3 对l e v e l 和l e v e l 2 团团 山东大学硕士学位论文 有所添加和修改,增强了d o m 访问结构化文档嘲的能力。 b ) 文档树 文档树是结构化文档的一种表示方式。一棵文档树由节点组成,包括一个根节 点及其子孙。根节点只有一个,由d o c u m e n t 接口管理。节点可以是文挡中的任何 一个事物,d o m 规范在n o d e 接口中定义了1 2 种不同的节点类型,包括d o c u m e n t 、 e l e m e n t 、t e x t 、c o g e n t 、a t t r i b u t e 等。需要注意的是有些节点不允许有子节点, 例如t e x t 节点、c o g e n t 节点。 g 图2 - 5t e x t x m l 的文档树 t e x t x m l t e x t c ) 节点遍历算法“3 对于树形结构,有两种基本算法来遍历节点:深度优先遍历和宽度优先遍历。 深度优先遍历是首先从树的根节点开始访问,然后依次深度优先遍历它的每一棵 子树。上面的文档树如果使用深度优先遍历算法访问,视先访问根还是先访问孩 子有两种顺序:n o d ea 、n o d eb 、n o d ec 、t e x t 、c o g e n t 或n o d eb 、t e x t 、c o g e n t 、 n o d ec 、n o d ea 。宽度优先是访问了树的根节点之后,依次访问根节点的子节点, 6 山东大学硕士学位论文 然后分别从这些子节点出发依次访问它们的子节点。图2 - 5 的文档树用宽度优先 遍历算法访问,顺序为n o d ea 、n o d eb 、n o d ec 、t e x t 、c o m m e n t 。有了这两种基 本算法,就可以实现一些通用算法,例如确定节点是否具有特定类型的兄弟节点 或祖先节点,寻找具有某属性的节点,确定一个节点是否包含另一个节点。 d ) 节点遍历接口 d o ml e v e l 3 和d o ml e v e l 2 提供了遍历结构化文档的接口,常用的介绍如下: n o d e 接口、n o d e l i s t 接口和n a m e n o d e m a p 接口 n o d e 接口不仅定义了节点类型,还提供了用来访问文档树的基本方法和属性。 使用这些属性和方法不但可以获取文档的数据,而且可以对文档进行插入、删除、 替换、添加等操作在下面的这个例子中,使用n o d e 接口查找文档树上第一个有 属性的节点。下文中程序代码用伪代码编写。 n o d ec h e c k n o d e ( n o d en ) i f ( n g e t n o d e t y p e ( ) = = n o d e e l e m e n tn o d e ) n a m e d n o d e m a pa t t r i b u t e s = ( e l e m e n t ) n g e t a t t r i b u t e s ( ) ; i f ( ( a t t r i b u t e s g e t l e n g t h ( ) ) ! = o ) r e t u r nn : ) f o r ( n o d ee = n f i r s t c h i l d n o d ea = c h e c k n o d e ( e ) : r e t u r ne : l n o d e l i s t 接口提供了属性l e n g t h 来表示节点列表的长度,还有一个i t e m ( ) 方法来按索引访问列表上的节点。 n a m e d n o d e m a p 接口除了提供l e n g t h 属性i t e m ( ) 方法外,还提供了按节点名称 或者节点命名空间和名称访问节点的方法,例如,g e t n a m e d l t e m ( ) 和 g e t n a m e d l t e m n s0 。 n o d e l t e r a t o r 接口和t r e e w a l k e r 接口 7 山东大学硕士学位论文 n o d e i t e r a t o r 接口用线形视图来表示文档,节点按照被遍历时的顺序排列。 调用它的n e x t n o d e ( ) 方法或者p r e v i o u s 0 方法就可以遍历线形视图中的所有节 点。与n o d e i t e r a t o r 接口不同的是,t r e e w a l k e r 接口保持文档的树形结构。它的 属性包括r o o t 、c u r r e n t n o d e 等,它的方法有p r e v i o u s n o d e ( ) 和n e x t n o d e ( ) 等。 这些方法都是针对c u r r e n t n o d e 指向的节点,如果它们跨过了根节点或者要获取 的节点不存在,将返回n u l l 。这两个接口连同n o d e f i l t e r 接口和 d o c u m e n t t r a v e r s a l 接口属于d o ml e v e l 2 的t r a v e r s a l 模块,d o c u m e n t t r a v e r s a l 提供创建接口n o d e i t e r a t o r 和t r e e w a l k e r 的方法。n o d e f i l t e r 接口提供了 a c c e p t n o d e 0 方法,该方法由程序员自己编程来实现,根据返回值是 f i l t e ra c c e p t 、f i l t e r _ r e j e c t 还是f i l t e r _ s k i p 来决定是接受、拒绝还是跳过 节点。编写时要注意避免抛出异常和修改文档。 如果把n o d e f i l t e r 接口和n o d e i t e r a t o r 或t r e e w a l k e r 接口关联起来,就能 获得比n o d e 接口更强大的功能。例如,不必逐个地访问所有的节点,因此 n o d e f i l t e r 可以滤掉不需要的节点关联的方法是,在创建n o d e i t e r a t o r 或 t r e e w a l k e r 对象时,把n o d e f i l t e r 对象作为参数传递给这两个对象。上面的例子 使用t r e e w a l k e r 和n o d e f i l t e r 实现如下: c l a s se l e m e n t f i l t e r s h o r ta c e e p t n o d e ( n o d en ) i f ( n g e t n o d e t y p e ( ) = = n o d e e l e m e n t _ n o d e ) n a m e d n o d e m a pa t t r i b u t e s2 ( e l e m e n t ) n a t t r i b u t e s ( ) : i f ( ( a t t r i b u t e s g e t l e n g t h ( ) ) ! = o ) r e t u r nn o d e f i l t e r f i l t e ra c c e p t ; t e t u r nn o d e f i l t e r f i l t e r _ r e j e c t : ) ) s 山东大学硕士学位论文 n o d ec h e c k n o d e ( n o d en ) i n tw h a t t o s h o w = n o d e f i l t e r s h o wa l l ; n o d e f i l t e rn o d e f i l t e r = n e we l e m e n t f i l t e r : t r e e w a l k e rw a l k e r = ( d o c u m e n t t r a v e r s a l) d o c u m e n t ) c r e a t e t r e e w a l k e r ( n ,w h a t t o s h o w ,n o d e f i l t e r ,f a l s e ) : r e t u r nw a l k e r n e x t n o d e ( ) : ) 从代码长度上看,n o d e 接口更简炼,但是t r e e w a l k e r 接口更快,因为它不象 n o d e 接口那样使用循环 d o c u m e n t 接口和e l e m e n t 接口 d o c u m e n t 接口来表示整个文档的根,使用它提供的”f a c t o r y ”方法可以创建 新的节点。例如,c r e a t e e l e m e n t ( ) 、c r e a t e t e x t n o d e ( ) 、c r e a t e c 0 1 1 1 m e n t ( ) 、 c r e a t e e l e m e n t n s ( ) 等。子孙节点均可由根节点d o c u m e n t 节点创建,而d o c u m e n t 节点则是在文档树创建时自动创建的。不过,d o m l m p l e m e n t 接口的c r e a t e d o c u m e n t ( ) 方法能够创建一个新的x m l 文档。 e l e m e n t 接口用来表示e l e m e n t 类型的节点,它提供了一些有关属性的方法, 包括g e t a t t r i b u t e ( ) 、s e t a t t r i b u t e ( ) 、g e t a t t r i b u t e n o d e ( ) 、s e t a t t r i b u t e n o d e ( ) 等。 这两个接口都派生自n o d e 接口,都提供了直接定位节点的方法: g e t e l e m e n t b y t a g n a m e0 、g e t e l e m e n t b y i d ( ) 和g e t e l e m e n t b y t a g n a m e n s0 。免去 了遍历文档树的烦琐。 e ) d o ml e v e l 3 d o ml e v e l 3 对前两层的c o r e 模块的某些接口进行了补充: 除了d o ml e v e ll c o r e 模块中定义的d o m s t r i n g 类型和d o m t i m e s t a m p 类型 以外,d o ml e v e l 3c o r e 模块中又定义了两种基本数据类型:d o m o b j e c t 和 d o m o s e r d a t a 。 d o ml e v e l 3 模块为n o d e 接口新添加了属性t e x t c o n t e n t 和方法 c o m p a r e d o c u m e n t p o s i t i o n ( ) 、s e t u s e r d a t a ( ) 、g e t u s e r d a t a ( ) 、i s s a m e n o d e 9 山东大学硕士学位论文 ( ) 、i s e q u a l n o d e ( ) 。调用c o m p a r e d o c u m e n t p o s i t i o n ( ) 方法可以判定两个节 点的位置关系,以下面这段代码为例,返回值可以是如下情况之一:n 和e 不连接、 n 在e 的前面、n 在e 的后面、n 包含e 、e 包含n 、n 和e 的前后关系视具体实现 而定。 n o d e1 2 ,e : n c o m p a r e d o c u m e n t p o s i t i o n ( e ) : i s s a m e n o d e ( ) 和i s e q u a l n o d e ( ) 可以判定两个节点是否相同或相等。两个节点 相同意味着它们指向内存中同一个对象,相等则意味着它们具有相同的属性。相 同的两个节点必然相等,反之则不一定。例如,创建两个名称都为p e r s o n 、属性 n a m e 都为”j a c k ”的节点,它们是相等的,但不是相同的。s e t u s e r d a t a ( ) 和 g e t u s e r d a t a ( ) 用来把数据添加到节点和从节点检索数据。 d o ml e v e l 3 为d o c u m e n t 接口新增加了一个方法a d o p t n o d e ( ) ,它实现将 一个节点及其子节点从一个文档移动到另一个文档,并修改该节点及其子节点的 o w n e r d o c u m e n t 属性如果操作失败,i m p o r t n o d e ( ) 方法将用来代替,源节点的 拷贝将被移动到另一个文档。 除此之外。d o ml e v e l 3 提供了几个新模块,其中已经成为正式推荐的模块有 l o a da n ds a v e ( l s ) 模块和v a l i d a t i o n 模块 l s 模块首先定义了四个基本的数据类型:l s i n p u t s t r e a m 、 l s o u t p u t s t r e a m 、l s r e a d e r 和l s w r i t e r 。然后定义了一套加载、保存和过滤文档 对象的接口:d o m i m p l e m e n t a t i o n l s 、l s p a r s e r 、l s i n p u t 、l s p a r s e r f i l t e r 、 l s s e r i a l i z e r 、l s o u t p u t ,和l s s e r i a l i z e r f i l t e r ,以及处理异常的接口: l s e x c e p t i o n 和l s e x c e p t i o n c o d e 。d o m i m p l e m e n t a t i o n l s 接口提供”f a c t o r y ”方 法创立l s p a r s e r 、l s i n p u t 、l s s e r i a l i z e r 和l s o u t p u t 对象。l s p a r s e r 接口能够 使用数据源创建一棵文档树,数据源由l s i n p u t 接口描述,创建时还可以引入过 滤器l s p a r s e r f i l t e r 。 d o m i m p l e m e n t a t i o n l si m p ; l s i n p u ti n p u t : i n p u t = i m p c r e a t e l s i n p u t0 : i n p u t s y s t e m i d = “t e s t x m l ”: 0 山东大学硕士学位论文 d o m s t r i n g s c h e m a = b ! ! e ;! ! ! :! :q ! g 2 q q ! x 丛l b ! 墨垒: l s p a r s e rp a r s e r = i m p c r e a t e l s p a r s e r ( m o d es y n c h r o n o u s s c h e m a ) : l s p a r s e r f i l t e rf i l t e r : f i l t e r w h a t t o s h o w = s h o w _ a l l ; p a r s e r f i l t e r = f i i t e r : d o c u m e n td o c = p a r s e r p a r s e ( i n p u t ) : 与上面的解析数据源创建d o m 树相反的过程是串行化d o m 树为字符串或者输出 流。相关的接口是:l s s e r i a l i z e r 、l s o u t p u t 、和l s s e r i a l i z e r f i l t e r 。 v a l i d a t i o n 模块提供引导x 札文档的创建和编辑的接口: d o c u m e n t e d i t v a l 、n o d e e d i t v a l 、e l e m e n t e d i t v a l 和c h a r a c t e r d a t a e d i t v a l 。使 用这些接口可以获得以下信息:文档是否是有效的,即是否符合s c h e m a ( 大纲) , 如d t d 或x m l 大纲:对于n o d e 节点来说,是否可以在它之前插入节点,是否可以 插入、删除、替换子节点;e l e m e n t 节点是否能够设置或删除指定名称或名称空间 的属性节点,以及能成为它的属性、孩子、兄弟和父母的节点的列表;是否可以 对节点的字符数据进行以下操作:设置、添加、替换、插入、删除字符数据。在 对节点进行操作的时候,如果操作可以进行,则返回状态码v a l j r u e ,然后操作 被执行,否则返回v a l f a l s e 或v a l _ d n k n o w 。 d o m 除了提供对x m l 和h t m l 都适用的模块( 如c o r e 模块) 以外,还提供了专 门支持它们的模块,例如,h t m l 模块适用与h t m l ,x p a t h 模块( 草案) 和a b s t r a c t s c h e m a 模块( 草案) 适用于x m l 。而且可以预见,为了保证应用系统之间有较好 的互操作性,d o m 将会提供对更多的w 3 c 规范的支持。 ( 2 ) s a x a ) s a ) ( 简介 s a x 嘲( s t a n d a r da p if o rx m l ,x m l 标准a p i ) 是由x m l - d e v 邮件列表的成员 开发维护的一个标准规范。 s a xa p i 有两个包:o r g x m l s a x 和o r g x m l s a x h e l p e r 。o r g x m l s a x 中定 义了一些基础接口,包括x m l r e a d e r 、c o n t e n t h a n d l e r 、e r r o r h a n d l e r 、d t d h a n d l e r 、 e n t i t y r e s o l v e r 等。o r g x m l s a x h e l p e r 中包含了一些方便开发人员使用的帮助 类,如缺省实现所有处理器接口的帮助类d e f a u l t h a n d l e r 、方便开发人员创建 山东大学硕士学位论文 x m l r e a d e r 的x m l r e a d e r f a c t o r y 类等等。 b ) s a ) 【的工作机制“o 】 而s a x 是基于事件驱动的处理模式。它顺序读入文档并根据文档内容产生事 件,然后把这些事件交由事件处理器处理。基于事件驱动的处理模式不是新产生 的一个概念,作为一种通用的程序设计模式,它已经被广泛应用与g u i 设计领域。 它围绕着事件源和事件处理器来工作,事件源是指可以产生事件的对象,而针对 事件产生响应的对象称为事件处理器。事件源中的事件处理器注册方法可以将事 件源和事件处理器连接起来,如果事件源产生一个事件,就调用事件处理器相应 的处理方法,同时把事件的状态信息传递给事件处理器,事件处理器会根据事件 信息来来决定自己的行为,这样该事件就得到了处理。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 团队沟通会活动方案
- 国庆留守妇女活动方案
- 唱响军歌活动方案
- 团建接力五子棋活动方案
- 国学礼赞活动方案
- 校园安全试题及答案
- 艺术领域的试题及答案
- 商家与社区开展活动方案
- 员工授课活动方案
- 品酒线下活动方案
- 盐城市区第Ⅲ防洪区水环境综合治理PPP项目Ⅱ标段“6·4”一般基坑坍塌事故调查报告
- 电机振动测定方法及限值振动测定方法
- 济南遥墙机场扩建工程航站楼建设监理大纲
- 拨叉综合课程设计
- 七年级上册数学知识点总结及精编例题1
- 学校物业服务监督及处罚办法
- 心内科高危药物安全管理与指引
- 2012《天津市安装工程预算基价》电气工程(预算基价导出)
- 1104基础报表填报说明(最新)
- 老旧小区改造技术标-
- 分支型室速的导管消融术ppt课件
评论
0/150
提交评论