Java与XML的结合应用
- 期刊名字:计算机应用
- 文件大小:282kb
- 论文作者:李大成,陈莘萌
- 作者单位:武汉大学
- 更新时间:2020-06-12
- 下载次数:次
第22卷第2期计算机应用Vol. 22. No. 22002年2月Computer ApplicationsFeb.2002文章编号:001-90820022-0059-03Java与ⅹML的结合应用李大成陈莘萌武汉大学计算机科学学院湖北武汉430072)摘要作为SGⅦL的子集元标记语言ⅹML及其相关技术目前正得到越来越广泛的应用。文档对象模型DOM是一种平台无关、语言无关的标准接口它允许程序从应用中访问和修改XML文档的内容和结构。文中首先论述了ⅹML的应用前景和应用现状然后提岀了基于DOM的ⅹM文档支持系统并研究了用 Java servlets和ⅹML来共同生成XML文档和DOM树。关键词XML;DOM; Java servlets中图分类号:TP311.52文献标识码1XML简介XML目前最广泛的应用可以分为以下四大类需要网络客户端协调多种不同类型数据库的应用;力图将比例可观的1.1XM产生的背景处理工作从服务器端分布于客户端的应用要求客户端将同ⅹML技术是互联网国际标准组织W3C提出的表示数据一数据以不同的形式展现给不同的使用者的应用習智能网络语义信息的标准。同HML一样都来自 Standard generalizes代理应个别用户的需要搜索定制信息的应用Markup languag(标准通用标记语言)称SGMⅦ。SGM是-1.3XM的应用种用标记来描述文档资料的通用语言,它包含了一系列的XML带有一个XML语法分析器。XML语法分析器使用mr〔 Document' Type Definition,文档类型定义〕规范,中定υ来确定一个文件是否是规范化的即它应该包含正确定义了标记的含义因而SGML的语法是可以扩展的。但由于义的开始和结束标记。如果它是有效的那么就说明完全遵SGML十分复杂、庞大、不易学在计算机上实现也比较困难。守DD规范。因此XML定义了更严格的数据结构。这样用鉴于这些原因Wb的发明者根据当时计算机技术的能力提户可以很容易将文件的属性映射到数据结构或对象分级结构出了HML语言。HML语言只使用了SGⅦL中很小一部分中这就使客户端的浏览器和数据库之间来回传输文件变得标记,为了便于计算机上实现,HIML规定的标记是固定的,很可靠也使用户可以使用结构化的XML文件作为一种中介即HML语法是不可扩展的,它不需要包含υ。HML以其体让数据在两种数据库之间灵活地进行转移。也就是说我简单精练的语法、极易掌握的通用性与易学性使Web网页们得到了一种从文件中检索信息的可靠办法这就是我们熟可以接近于每个普通人互联网也得以迅猛发展。然而电子悉的语法分析。这种数据结构的另一个好处是使各种格式的商务、电子图书、远程教育等全新领域的异军突起逐渐发展XML文件都可以被机器识别这样允许机器能够识别各种成为互联网世界愈发重要的组成部分随之而来的是Web文格式的XML页面就可以让不同Web站点之间自动共享不同件的复杂化、多样化、智能化于是高容量、高信息量、高效率格式的数据便成为网络信息传输技术发展的追求。与此同时还有另种需求变得愈发广泛而迫切即数据能否根据不同用户不同2XML与Java的结合应用需求而以不同的效果、不同的形式表现出来。这一切都是2.1XML与Java的结合HTML所不能满足的开发一种新的Web页面语言已势在必Java语言是一种流行的面向对象的编程语言,由Sum行。We标准化组织W3C建议使用一种精简的SCML版本 Microsystems在上世纪90年代中期开发。它是一个基于JavaXML应运而生了虚拟机(JVM)的、与操作平台无关的执行模型由于用作万1.2XML的现状维网应用程序的编程语言而很快被广泛的接受。与C++不XML是一个精简的SGML,它将SGM的丰富功能与同Java类定义放在一个单独的自含式文件中既没有单独的HIML的易用性结合到We的应用中。XML保留了SGML的头文件也没有执行文件并且Java语言基本上没有定义的次可扩展功能这使XML从根本上有别于HM。XⅦL要比序相关性。在出现方法体时,它总是紧随方法特征声明之后HNL强大得多,它不再是固定的标记而允许定义数量不限定义。此外Jaa语言缺少集成处理器。这些特性合在一起的标记来描述文档中的资料允许嵌套的信息结构。HML使Java凵中国煤化工使语言成为使用只是Web显示数据的通用方法而XML提供了一个直接处理XML表wecb数据的通用方法。HIML着重描述Wcb页面的显示格CNMHG、易提取信息的文档和式而XML着重描述Web页面的内容。数据而java有助于独立平台、易于处理的面向对象的应用收稿日期2001-09-19作者简介李大成〔198-)男顽士主要研究方向软件技术与软件工程;陈莘頔1930-)男教授博士生导师主要研究方向汁箅机体系结构、计算机软件与理论计算机应用2002年软件解决方案。在Wb应用中Java使浏览器工作时就象在提供一个可使用于多个平台的编程接口。因此DOM是一个通用的应用平台上而平台与平台之间是相互独立的。在适合多个平台可使用任意编程语言实现的方法。HTML语言中由于固定的tag集合和HM语义上的贫瘠使DOM的核心是定义了代表构成XML文档的所有对象的得Jawa的应用受到了极大的限制。而且由于在HML中不一系列类型元素、属性、实体引用、注释、文本数据、处理指示同的语义无法表现故数据元中丰富的信息得不到一种统—和其余对象。从DOM的观点来看文档的逻辑结构通常是树的表示但ⅹML却能很好的解决这个问题形的每个文档可含有一个文档类型节点、一个根节点可有XML的应用大致上可以分为三大类零以上的子要素或操作指示等子节点。节点把功能与行为封)简单数据的表示和交换(针对ⅹML的简单 APK SAX)装在一起成为对象如要素节点对象文档片段对象等。DOM和文档对象模型〔DOM)语法解析,不同的文档类型定义提供了一种对这些对象节点的标准访问接口接口采用了DTD和概要 schemas)OMG的IL语言来定义接口函数功能的实现视应用而定2)面向消息的计簟(XML-RPα远程过程调用)SOAP这些接口被用于对XM和HnML文档的内容、结构和风格进协议电子化业务XM(eML)行动态操纵如建立文档遍历其结构添加、修改、删除要素3)用户界面相关、表示相关的上下文(可扩展样式表语和内容等。由于ID是平台、语言无关的所以利用DOM这言XSL)可扩展样式表语言转換(XSLT)个能被不同环境或应用所利用的标准的程序设计接口可以实这几类应用在p2EJaa2 latform Enterprise Edition架构现We的互操作。中恰好有天然的对应数据表示和交换功能是EJB组件模型DOM接口继承树的根节点是Node,由于把XML文档的中持久化服炙 persistence services舶的一部分基于消息的通讯逻辑结构看作是树形结构,它定义了处理XML文档的一些必由Jaa消息服氖灬Ms)AP来处理而界面表示正是Java服务要方法,这些方法包括读取、删除、修改新增子节点器页面P厢 Java Servlets最为擅长处理的。Document代表整个XML文件对象它提供了处理该对象的2.2XML与Java在Web应用上的三层结构系列类型沅元素、属性、实体引用、注释等。 Document Fragment通过将Web应用程序划分为三层结构我们可以区分出允许提取文档的一部分。(如图2)应用程序的三个逻辑组件用户界面、计算逻辑与数据存[浏览器浏览器储。然后针对每个逻辑单元独立进行开发从而极大地增强应用程序设计的灵活性。例如将计算逻辑与用户界interpt面分隔开来开发各种各样的用户界面。这样不仅允许不同类型的用户访问同一计算层也可以根据每一类用XML document户的特定需要定制各自的界面。数据存储层允许在对数Stncture services据存储方式完全改变的情况下不影响应用程序的计算servletsJSPs BeansEJBs逻辑或用户界面。(如图1)Database Connectors从三层结构中获益最大的是中间层因为三层结构允许计算逻辑的开发达到任意复杂的程度,它自己也可Data server以包含多层。而且三层结构还允许任意改变计算逻辑,而不会影响到用户与之交互的方式。Java与XML的结图2DOM接口继承结构图合提供了建立三层应用程序的最佳手段。DOM不涉及数据类型或数据结构: cument'T'ype可以是XML与Java在Web应用上的三层结构图字符串、整型值或枚举类型; lement可以是树、散列表或数组。所有这些决定都用于实现程序中而且W3C提供的JavaNodeList联编也将大多数决定留给实现程序。例如Java接口没有声明任何变量以对应IL属性 Interface Definition language)Java联编中唯一的类是 DOMException它扩展了 Runtime Exception并定义了一些公共静态的代码用于不同的错误条件。个XML应用通常是基于一个XML解析器而构建的。它为其用户提供了一个接口,以及对后端存储数据的一个接口。目前支持DOM的解析器很多,比较常见的有 Apache的ProcessingInstrcutionmercer.jar和IBM的xml4jjar图用来装载ⅹM文档到缓存中文档装载时可3文档对象模式DOM)以使用中国煤化工采用树形结构表示MM文档CNMHG素有一个或多个子节点DOM代表文档对象模型( Document Object Model),它是用来表示树的分枝。HIML和ⅹML文档的编程基础它定义了处理执行文档的途节点接口程序通常用来读和写XML节点树中的个别元径。DOM已经被制定为 Java xmi处理的标准,封装在og素文档元素的子节点属性可以用来构造个别元素节点3e.domn包里面。编程者可以使用DOM增加文档、定位文档 XML parser用来证明we中的DOM支持遍历节点树的所有结构、填加修改删除文档元素。W3C的重要目标是利用DOM函数并可通过它们访问节点和及其属性、插入删除节点、转第2期李大成等Java与XML的结合应用换节点树到XML中Element root doc createElement("Milan4示例oc createElement("tear在这个示例中我们用 java servlets和XM来共同生成了Element Name doc createElement ("nameName append Child(doc. create Text Node("AC Milan"))XML文档和DOM树。这里我们扩展了 HttpseRvlet类author appendChild( Name)HttpseRvleT类提供了通常与CCI程序相关的功能,它支持pt和get并且使代码具有对HTTP请求标头的完全访问权包我们创建了一个Java类的实例,该类实现了DOM括UsDocument接口然后要求这个节点创建各种节点。这里定义一般的在构建理解XML的 servlet时主要按以下三个了一些实例变量来保存准备为其提供服务的节点的值。这些步骤进行值在类声明顶部声明并在 initialκe方法中初始化。将内容类型设为text/xm最后一步是将被请求的DOM树部分发送给用户。我们ap response. setContent'Typd"text/xml")使用一个递归方法 print DOMTree来实现这一任务,它处理节b)创建ⅹML文档。点及其所有子节点。因为这个方法是递归的所以我们从文c)将XML文档写回客户机。档根节点还是从DOM树的其他节点开始并不重要。如果所在编写的大多数 Servlet中主要精力都集中在第二步。请求的是我们知道的一个节点则可以将这个节点传递给方例如我们可以根据数据库査询创建一个XML文档也可能法 printDOMTreeo否则我们可以传递 Document节点。基于从客户传送来的HTP参数生成它或者是使用其他类清单3显示了这一步骤。型的数据检索或生成方法。清单3.p在本例中我们从零开始生成一个DOM树然后将 DOM if( requestedSubtree. equalslgnore Case"eam”)树的一部分显示在请求者的屏幕上。向请求者发送回的tDOMTree( team, outDOM树部分取决于 servlet接收到的HP参数而无需XMLualslgnore Case("players"))源文档printDOMTree( players, out)清单1显示了处理HTP参数的代码段单1. xmlfromdom.javaprint DOMTree( doc, out)publicvoidservice(httpServletrequestrequestHttpservletRespon这一步骤的流程如下如果树的根是NUL则返回throws IOException, Servlet Excepti对根节树的每个节点都需要执行的操作将当前根节点的每个子节点作为根节点递归重复该过response. setContentType("text/xml")Print Writer out response. get Writer(Enumeration ke根据请求,将当前节点输出为可以被浏览器识别的String keyXMIString requestedSubtree显示结果如果 subtree参数是team则返回结果是while( keys has More Elements())name AC Milan Italy request. get Parameter( key如果suee参数是 player则返回是我们使用 Http Servletrequest. get ParameterNames方法从player> Tom Ron KurT找用户所请求的信息。我们使用的信息从对象中构建DOM树该DOM树包含了某球队各个球员名称的文本,以及球队的其他信息。我们将根据 Http subtree参数返回DoM树的5结语部分。清单2显示了构建DOM树的部分代码清单2.构建DOM树分应用程序是如今最常见、最值得投入的一种应用程中国煤化工方式是使之成为三层应Element用程序CNMHG成部分用户界面、计算逻辑与数据存储而Ja与XML的组合提供了建立三层应用ublic void initialize()程序的最佳手段。doc=( Document)Class. for Name ("org. apache. xerces. dom从Web或者企业级应用的角度看能以这种方式访问数DocumentImpl"). newlnstance(据真是一种福音它体现了高度的可移动性使我们与元数据if(doc ! null)(下转第64页计算机应用2002年obj Root appendChild objRecordxmldoc= new ActiveXObject(microsoft xmldom")or xTo Request Form. Countxmldoc.load("www.autopart.org/xs.xml")If instr(1, Request Form. Key(x), "lin")= 0 ThenSet obj ield obj Dom, createElement("field")function Query XMLRec()(objattID. Text Request Form Key(x)root xmldom document ElementSet obj Field Value obj Dom, createElement ("field-value")for (j=0;j< root, childNodes, item(i) attributes. length; j++)bjFieldvalue. Text= Request. Form(x)if((root. childNodes. item(i). attributes(j).namebj Field append child objField valueLBJNAME. value)&合并XML文档(root childNodes item(i), attributes(j), value = VALUE4.4服务器端管理程序的设计开发分析汽车的结构可知汽车一共包括27个部件。从系统的设计出发每一个部件都对应一个XML部件库。它们是汽车的个性库”同时这27库”又有共性的东西即它们管理程序的三项基本操作:添加、删除、修改,分别由记录都是一对<产品>产品>"tag构成的库的结构完 ddXMlRec( subFilename), DelXmlrec( strRECNO), EditXMlrec全相同。这些部件库是以文档的形式存在并且由文件系( strRECNO个函数完成,它们主要用到对象 XMLDOMINode统管理。服务器端的管理程序主要针对这些库中记录的维的aenh() insert Befor() replace Chil) remove Child厢护包括添加、删除、修改等。主要方便用户高效率地管理、更其它一些对象的相关方法。新自己的产品信息。实现这三项功能的原理基本相同通过5结束语ⅹ ML DOM提供的AP对XML文档树中结点进行相应操作。同时们的一个共同点是都必须首先查询。例如添加必须充分发挥传统本文通过传统的DBMS技术与先进的XML技术相结合首先查询部件库的存储位置删除、修改必须首先查询满足条充分发挥传统DBMS在数据库检索方面的优势和成熟技术件的产品记录。所以检索是这一部分设计的关键而检索的实现了网上汽车零部件信息的远程采集。系统具有存储方关键又在于建立科学的索引机制。便、稳定性强、易于传输、扩展性好、效率高、检索具有自身特为了提高系统的查询效率系统中通过在后台数据库中色等优点。建立索引表的方式来实现索引索引表是通过映射机制来实参考文献现的每当用户添加一条零件产品信息由中间层程序自动抽!](美) Dider martin,等.ⅫM高级编程.李颉等译.北京:机械工业出版社,2001.233-239取起部件编号零件编号、零件名称和其它重要的信息自动形121(美) MICHAEL MORRISON,aaM揭秘M].陆新年等译成索引条目即实现映射。并把条目存入后台数据库的索引北京:清华大学出版社,2001.286-307表中。零部件索引表( LBJSYB冲的索引条目格式如表2所31李景春,王强等,基于DOM的ⅹM文档支持系统[J.南京大学刁学报(自科版),2000-09,5(36):560-570部件库的索引条目格式、示例4]胡朝晖.利用MXM解析XML文本[EB/OL].htp://部件编号零件编号零件名softwareworld. com. cn/rv/2001-1/26. htm[5 Lauren W, Arnaud L H, Vidur A, et al. Document Object Model22000悬架www.autopart,org/xs.xml(doM)leVelISpecificationEb/Ol]http://www.w3.org/tr/recDOM- Level-1,1998-10-04维护的各个子功能项在实现时必须到后台数据库首先61BayT,PadJ, Sperberg C M, Extensible Markup Language(xM)1.0检索索引表匹配相关查询条件。然后打开对应的部件库SpecificationEb/oLi.http://www.w3.org/tr/rec-Xml,1998操作记录。一个典型的在部件库中检索某产品记录"的函数段如下7]李志华,施眀辉,孙荣胜基于ⅪML的汽车零部件网站数据存储function Load Doc (I与查询的实现[J.无锡轻工大学学报(自科版),2001,5(88)(上接第61页)的实际资源本身隔离。这些资源可能来自一个关系数据库系统、某种活动媒体服务器或者Wcb服务器上的一个静态ⅹML.2lV· Apparao,S.Bme,M. Champion,rtal文档等等。如果想把这些数据加载到Java应用中我们可中国煤化xhm0atMdemendation[ EB/OL I以从当前众多的Jaa语言XML解析器中选用一个通过它将Level-1. October 1998[3]IBHCNMHGng XMl and XSL with IBMⅹML数据装入一个DOM文档最后遍历文档将所有这些数Websphere3.OieB/olI.http://www,redbooksibm.com2000据转换到我们应用系统的对象模型中。参考文献[4BrettMclaughLin.LetyourdomdothewalkingEb/Ol].http://www[1 Todd Sundsted. XML and Java tackle enterprise application integration106. ibm. com/developerworks/xml/library/x-dmtrv/index. htmlIeb/ol].http://www.javaworld.conm/javaworld/jw-06-1999/jw2001-8
-
C4烯烃制丙烯催化剂 2020-06-12
-
煤基聚乙醇酸技术进展 2020-06-12
-
生物质能的应用工程 2020-06-12
-
我国甲醇工业现状 2020-06-12
-
JB/T 11699-2013 高处作业吊篮安装、拆卸、使用技术规程 2020-06-12
-
石油化工设备腐蚀与防护参考书十本免费下载,绝版珍藏 2020-06-12
-
四喷嘴水煤浆气化炉工业应用情况简介 2020-06-12
-
Lurgi和ICI低压甲醇合成工艺比较 2020-06-12
-
甲醇制芳烃研究进展 2020-06-12
-
精甲醇及MTO级甲醇精馏工艺技术进展 2020-06-12