Java與XML的結合應用 Java與XML的結合應用

Java與XML的結合應用

  • 期刊名字:計算機應用
  • 文件大?。?82kb
  • 論文作者:李大成,陳莘萌
  • 作者單位:武漢大學(xué)
  • 更新時(shí)間:2020-06-12
  • 下載次數:次
論文簡(jiǎn)介

第22卷第2期計算機應用Vol. 22. No. 22002年2月Computer ApplicationsFeb.2002文章編號:001-90820022-0059-03Java與ⅹML的結合應用李大成陳莘萌武漢大學(xué)計算機科學(xué)學(xué)院湖北武漢430072)摘要作為SGⅦL的子集元標記語(yǔ)言ⅹML及其相關(guān)技術(shù)目前正得到越來(lái)越廣泛的應用。文檔對象模型DOM是一種平臺無(wú)關(guān)、語(yǔ)言無(wú)關(guān)的標準接口它允許程序從應用中訪(fǎng)問(wèn)和修改XML文檔的內容和結構。文中首先論述了ⅹML的應用前景和應用現狀然后提岀了基于DOM的ⅹM文檔支持系統并研究了用 Java servlets和ⅹML來(lái)共同生成XML文檔和DOM樹(shù)。關(guān)鍵詞XML;DOM; Java servlets中圖分類(lèi)號:TP311.52文獻標識碼1XML簡(jiǎn)介XML目前最廣泛的應用可以分為以下四大類(lèi)需要網(wǎng)絡(luò )客戶(hù)端協(xié)調多種不同類(lèi)型數據庫的應用;力圖將比例可觀(guān)的1.1XM產(chǎn)生的背景處理工作從服務(wù)器端分布于客戶(hù)端的應用要求客戶(hù)端將同ⅹML技術(shù)是互聯(lián)網(wǎng)國際標準組織W3C提出的表示數據一數據以不同的形式展現給不同的使用者的應用習智能網(wǎng)絡(luò )語(yǔ)義信息的標準。同HML一樣都來(lái)自 Standard generalizes代理應個(gè)別用戶(hù)的需要搜索定制信息的應用Markup languag(標準通用標記語(yǔ)言)稱(chēng)SGMⅦ。SGM是-1.3XM的應用種用標記來(lái)描述文檔資料的通用語(yǔ)言,它包含了一系列的XML帶有一個(gè)XML語(yǔ)法分析器。XML語(yǔ)法分析器使用mr〔 Document' Type Definition,文檔類(lèi)型定義〕規范,中定υ來(lái)確定一個(gè)文件是否是規范化的即它應該包含正確定義了標記的含義因而SGML的語(yǔ)法是可以擴展的。但由于義的開(kāi)始和結束標記。如果它是有效的那么就說(shuō)明完全遵SGML十分復雜、龐大、不易學(xué)在計算機上實(shí)現也比較困難。守DD規范。因此XML定義了更嚴格的數據結構。這樣用鑒于這些原因Wb的發(fā)明者根據當時(shí)計算機技術(shù)的能力提戶(hù)可以很容易將文件的屬性映射到數據結構或對象分級結構出了HML語(yǔ)言。HML語(yǔ)言只使用了SGⅦL中很小一部分中這就使客戶(hù)端的瀏覽器和數據庫之間來(lái)回傳輸文件變得標記,為了便于計算機上實(shí)現,HIML規定的標記是固定的,很可靠也使用戶(hù)可以使用結構化的XML文件作為一種中介即HML語(yǔ)法是不可擴展的,它不需要包含υ。HML以其體讓數據在兩種數據庫之間靈活地進(jìn)行轉移。也就是說(shuō)我簡(jiǎn)單精練的語(yǔ)法、極易掌握的通用性與易學(xué)性使Web網(wǎng)頁(yè)們得到了一種從文件中檢索信息的可靠辦法這就是我們熟可以接近于每個(gè)普通人互聯(lián)網(wǎng)也得以迅猛發(fā)展。然而電子悉的語(yǔ)法分析。這種數據結構的另一個(gè)好處是使各種格式的商務(wù)、電子圖書(shū)、遠程教育等全新領(lǐng)域的異軍突起逐漸發(fā)展XML文件都可以被機器識別這樣允許機器能夠識別各種成為互聯(lián)網(wǎng)世界愈發(fā)重要的組成部分隨之而來(lái)的是Web文格式的XML頁(yè)面就可以讓不同Web站點(diǎn)之間自動(dòng)共享不同件的復雜化、多樣化、智能化于是高容量、高信息量、高效率格式的數據便成為網(wǎng)絡(luò )信息傳輸技術(shù)發(fā)展的追求。與此同時(shí)還有另種需求變得愈發(fā)廣泛而迫切即數據能否根據不同用戶(hù)不同2XML與Java的結合應用需求而以不同的效果、不同的形式表現出來(lái)。這一切都是2.1XML與Java的結合HTML所不能滿(mǎn)足的開(kāi)發(fā)一種新的Web頁(yè)面語(yǔ)言已勢在必Java語(yǔ)言是一種流行的面向對象的編程語(yǔ)言,由Sum行。We標準化組織W3C建議使用一種精簡(jiǎn)的SCML版本 Microsystems在上世紀90年代中期開(kāi)發(fā)。它是一個(gè)基于JavaXML應運而生了虛擬機(JVM)的、與操作平臺無(wú)關(guān)的執行模型由于用作萬(wàn)1.2XML的現狀維網(wǎng)應用程序的編程語(yǔ)言而很快被廣泛的接受。與C++不XML是一個(gè)精簡(jiǎn)的SGML,它將SGM的豐富功能與同Java類(lèi)定義放在一個(gè)單獨的自含式文件中既沒(méi)有單獨的HIML的易用性結合到We的應用中。XML保留了SGML的頭文件也沒(méi)有執行文件并且Java語(yǔ)言基本上沒(méi)有定義的次可擴展功能這使XML從根本上有別于HM。XⅦL要比序相關(guān)性。在出現方法體時(shí),它總是緊隨方法特征聲明之后HNL強大得多,它不再是固定的標記而允許定義數量不限定義。此外Jaa語(yǔ)言缺少集成處理器。這些特性合在一起的標記來(lái)描述文檔中的資料允許嵌套的信息結構。HML使Java凵中國煤化工使語(yǔ)言成為使用只是Web顯示數據的通用方法而XML提供了一個(gè)直接處理XML表wecb數據的通用方法。HIML著(zhù)重描述Wcb頁(yè)面的顯示格CNMHG、易提取信息的文檔和式而XML著(zhù)重描述Web頁(yè)面的內容。數據而java有助于獨立平臺、易于處理的面向對象的應用收稿日期2001-09-19作者簡(jiǎn)介李大成〔198-)男頑士主要研究方向軟件技術(shù)與軟件工程;陳莘頔1930-)男教授博士生導師主要研究方向汁箅機體系結構、計算機軟件與理論計算機應用2002年軟件解決方案。在Wb應用中Java使瀏覽器工作時(shí)就象在提供一個(gè)可使用于多個(gè)平臺的編程接口。因此DOM是一個(gè)通用的應用平臺上而平臺與平臺之間是相互獨立的。在適合多個(gè)平臺可使用任意編程語(yǔ)言實(shí)現的方法。HTML語(yǔ)言中由于固定的tag集合和HM語(yǔ)義上的貧瘠使DOM的核心是定義了代表構成XML文檔的所有對象的得Jawa的應用受到了極大的限制。而且由于在HML中不一系列類(lèi)型元素、屬性、實(shí)體引用、注釋、文本數據、處理指示同的語(yǔ)義無(wú)法表現故數據元中豐富的信息得不到一種統—和其余對象。從DOM的觀(guān)點(diǎn)來(lái)看文檔的邏輯結構通常是樹(shù)的表示但ⅹML卻能很好的解決這個(gè)問(wèn)題形的每個(gè)文檔可含有一個(gè)文檔類(lèi)型節點(diǎn)、一個(gè)根節點(diǎn)可有XML的應用大致上可以分為三大類(lèi)零以上的子要素或操作指示等子節點(diǎn)。節點(diǎn)把功能與行為封)簡(jiǎn)單數據的表示和交換(針對ⅹML的簡(jiǎn)單 APK SAX)裝在一起成為對象如要素節點(diǎn)對象文檔片段對象等。DOM和文檔對象模型〔DOM)語(yǔ)法解析,不同的文檔類(lèi)型定義提供了一種對這些對象節點(diǎn)的標準訪(fǎng)問(wèn)接口接口采用了DTD和概要 schemas)OMG的IL語(yǔ)言來(lái)定義接口函數功能的實(shí)現視應用而定2)面向消息的計簟(XML-RPα遠程過(guò)程調用)SOAP這些接口被用于對XM和HnML文檔的內容、結構和風(fēng)格進(jìn)協(xié)議電子化業(yè)務(wù)XM(eML)行動(dòng)態(tài)操縱如建立文檔遍歷其結構添加、修改、刪除要素3)用戶(hù)界面相關(guān)、表示相關(guān)的上下文(可擴展樣式表語(yǔ)和內容等。由于ID是平臺、語(yǔ)言無(wú)關(guān)的所以利用DOM這言XSL)可擴展樣式表語(yǔ)言轉換(XSLT)個(gè)能被不同環(huán)境或應用所利用的標準的程序設計接口可以實(shí)這幾類(lèi)應用在p2EJaa2 latform Enterprise Edition架構現We的互操作。中恰好有天然的對應數據表示和交換功能是EJB組件模型DOM接口繼承樹(shù)的根節點(diǎn)是Node,由于把XML文檔的中持久化服炙 persistence services舶的一部分基于消息的通訊邏輯結構看作是樹(shù)形結構,它定義了處理XML文檔的一些必由Jaa消息服氖灬Ms)AP來(lái)處理而界面表示正是Java服務(wù)要方法,這些方法包括讀取、刪除、修改新增子節點(diǎn)器頁(yè)面P廂 Java Servlets最為擅長(cháng)處理的。Document代表整個(gè)XML文件對象它提供了處理該對象的2.2XML與Java在Web應用上的三層結構系列類(lèi)型沅元素、屬性、實(shí)體引用、注釋等。 Document Fragment通過(guò)將Web應用程序劃分為三層結構我們可以區分出允許提取文檔的一部分。(如圖2)應用程序的三個(gè)邏輯組件用戶(hù)界面、計算邏輯與數據存[瀏覽器瀏覽器儲。然后針對每個(gè)邏輯單元獨立進(jìn)行開(kāi)發(fā)從而極大地增強應用程序設計的靈活性。例如將計算邏輯與用戶(hù)界interpt面分隔開(kāi)來(lái)開(kāi)發(fā)各種各樣的用戶(hù)界面。這樣不僅允許不同類(lèi)型的用戶(hù)訪(fǎng)問(wèn)同一計算層也可以根據每一類(lèi)用XML document戶(hù)的特定需要定制各自的界面。數據存儲層允許在對數Stncture services據存儲方式完全改變的情況下不影響應用程序的計算servletsJSPs BeansEJBs邏輯或用戶(hù)界面。(如圖1)Database Connectors從三層結構中獲益最大的是中間層因為三層結構允許計算邏輯的開(kāi)發(fā)達到任意復雜的程度,它自己也可Data server以包含多層。而且三層結構還允許任意改變計算邏輯,而不會(huì )影響到用戶(hù)與之交互的方式。Java與XML的結圖2DOM接口繼承結構圖合提供了建立三層應用程序的最佳手段。DOM不涉及數據類(lèi)型或數據結構: cument'T'ype可以是XML與Java在Web應用上的三層結構圖字符串、整型值或枚舉類(lèi)型; lement可以是樹(shù)、散列表或數組。所有這些決定都用于實(shí)現程序中而且W3C提供的JavaNodeList聯(lián)編也將大多數決定留給實(shí)現程序。例如Java接口沒(méi)有聲明任何變量以對應IL屬性 Interface Definition language)Java聯(lián)編中唯一的類(lèi)是 DOMException它擴展了 Runtime Exception并定義了一些公共靜態(tài)的代碼用于不同的錯誤條件。個(gè)XML應用通常是基于一個(gè)XML解析器而構建的。它為其用戶(hù)提供了一個(gè)接口,以及對后端存儲數據的一個(gè)接口。目前支持DOM的解析器很多,比較常見(jiàn)的有 Apache的ProcessingInstrcutionmercer.jar和IBM的xml4jjar圖用來(lái)裝載ⅹM文檔到緩存中文檔裝載時(shí)可3文檔對象模式DOM)以使用中國煤化工采用樹(shù)形結構表示MM文檔CNMHG素有一個(gè)或多個(gè)子節點(diǎn)DOM代表文檔對象模型( Document Object Model),它是用來(lái)表示樹(shù)的分枝。HIML和ⅹML文檔的編程基礎它定義了處理執行文檔的途節點(diǎn)接口程序通常用來(lái)讀和寫(xiě)XML節點(diǎn)樹(shù)中的個(gè)別元徑。DOM已經(jīng)被制定為 Java xmi處理的標準,封裝在og素文檔元素的子節點(diǎn)屬性可以用來(lái)構造個(gè)別元素節點(diǎn)3e.domn包里面。編程者可以使用DOM增加文檔、定位文檔 XML parser用來(lái)證明we中的DOM支持遍歷節點(diǎn)樹(shù)的所有結構、填加修改刪除文檔元素。W3C的重要目標是利用DOM函數并可通過(guò)它們訪(fǎng)問(wèn)節點(diǎn)和及其屬性、插入刪除節點(diǎn)、轉第2期李大成等Java與XML的結合應用換節點(diǎn)樹(shù)到XML中Element root doc createElement("Milan4示例oc createElement("tear在這個(gè)示例中我們用 java servlets和XM來(lái)共同生成了Element Name doc createElement ("nameName append Child(doc. create Text Node("AC Milan"))XML文檔和DOM樹(shù)。這里我們擴展了 HttpseRvlet類(lèi)author appendChild( Name)HttpseRvleT類(lèi)提供了通常與CCI程序相關(guān)的功能,它支持pt和get并且使代碼具有對HTTP請求標頭的完全訪(fǎng)問(wèn)權包我們創(chuàng )建了一個(gè)Java類(lèi)的實(shí)例,該類(lèi)實(shí)現了DOM括UsDocument接口然后要求這個(gè)節點(diǎn)創(chuàng )建各種節點(diǎn)。這里定義一般的在構建理解XML的 servlet時(shí)主要按以下三個(gè)了一些實(shí)例變量來(lái)保存準備為其提供服務(wù)的節點(diǎn)的值。這些步驟進(jìn)行值在類(lèi)聲明頂部聲明并在 initialκe方法中初始化。將內容類(lèi)型設為text/xm最后一步是將被請求的DOM樹(shù)部分發(fā)送給用戶(hù)。我們ap response. setContent'Typd"text/xml")使用一個(gè)遞歸方法 print DOMTree來(lái)實(shí)現這一任務(wù),它處理節b)創(chuàng )建ⅹML文檔。點(diǎn)及其所有子節點(diǎn)。因為這個(gè)方法是遞歸的所以我們從文c)將XML文檔寫(xiě)回客戶(hù)機。檔根節點(diǎn)還是從DOM樹(shù)的其他節點(diǎn)開(kāi)始并不重要。如果所在編寫(xiě)的大多數 Servlet中主要精力都集中在第二步。請求的是我們知道的一個(gè)節點(diǎn)則可以將這個(gè)節點(diǎn)傳遞給方例如我們可以根據數據庫査詢(xún)創(chuàng )建一個(gè)XML文檔也可能法 printDOMTreeo否則我們可以傳遞 Document節點(diǎn)?;趶目蛻?hù)傳送來(lái)的HTP參數生成它或者是使用其他類(lèi)清單3顯示了這一步驟。型的數據檢索或生成方法。清單3.p在本例中我們從零開(kāi)始生成一個(gè)DOM樹(shù)然后將 DOM if( requestedSubtree. equalslgnore Case"eam”)樹(shù)的一部分顯示在請求者的屏幕上。向請求者發(fā)送回的tDOMTree( team, outDOM樹(shù)部分取決于 servlet接收到的HP參數而無(wú)需XMLualslgnore Case("players"))源文檔printDOMTree( players, out)清單1顯示了處理HTP參數的代碼段單1. xmlfromdom.javaprint DOMTree( doc, out)publicvoidservice(httpServletrequestrequestHttpservletRespon這一步驟的流程如下如果樹(shù)的根是NUL則返回throws IOException, Servlet Excepti對根節樹(shù)的每個(gè)節點(diǎn)都需要執行的操作將當前根節點(diǎn)的每個(gè)子節點(diǎn)作為根節點(diǎn)遞歸重復該過(guò)response. setContentType("text/xml")Print Writer out response. get Writer(Enumeration ke根據請求,將當前節點(diǎn)輸出為可以被瀏覽器識別的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找用戶(hù)所請求的信息。我們使用的信息從對象中構建DOM樹(shù)該DOM樹(shù)包含了某球隊各個(gè)球員名稱(chēng)的文本,以及球隊的其他信息。我們將根據 Http subtree參數返回DoM樹(shù)的5結語(yǔ)部分。清單2顯示了構建DOM樹(shù)的部分代碼清單2.構建DOM樹(shù)分應用程序是如今最常見(jiàn)、最值得投入的一種應用程中國煤化工方式是使之成為三層應Element用程序CNMHG成部分用戶(hù)界面、計算邏輯與數據存儲而Ja與XML的組合提供了建立三層應用ublic void initialize()程序的最佳手段。doc=( Document)Class. for Name ("org. apache. xerces. dom從Web或者企業(yè)級應用的角度看能以這種方式訪(fǎng)問(wèn)數DocumentImpl"). newlnstance(據真是一種福音它體現了高度的可移動(dòng)性使我們與元數據if(doc ! null)(下轉第64頁(yè)計算機應用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服務(wù)器端管理程序的設計開(kāi)發(fā)分析汽車(chē)的結構可知汽車(chē)一共包括27個(gè)部件。從系統的設計出發(fā)每一個(gè)部件都對應一個(gè)XML部件庫。它們是汽車(chē)的個(gè)性庫”同時(shí)這27庫”又有共性的東西即它們管理程序的三項基本操作:添加、刪除、修改,分別由記錄都是一對<產(chǎn)品>"tag構成的庫的結構完 ddXMlRec( subFilename), DelXmlrec( strRECNO), EditXMlrec全相同。這些部件庫是以文檔的形式存在并且由文件系( strRECNO個(gè)函數完成,它們主要用到對象 XMLDOMINode統管理。服務(wù)器端的管理程序主要針對這些庫中記錄的維的aenh() insert Befor() replace Chil) remove Child廂護包括添加、刪除、修改等。主要方便用戶(hù)高效率地管理、更其它一些對象的相關(guān)方法。新自己的產(chǎn)品信息。實(shí)現這三項功能的原理基本相同通過(guò)5結束語(yǔ)ⅹ ML DOM提供的AP對XML文檔樹(shù)中結點(diǎn)進(jìn)行相應操作。同時(shí)們的一個(gè)共同點(diǎn)是都必須首先查詢(xún)。例如添加必須充分發(fā)揮傳統本文通過(guò)傳統的DBMS技術(shù)與先進(jìn)的XML技術(shù)相結合首先查詢(xún)部件庫的存儲位置刪除、修改必須首先查詢(xún)滿(mǎn)足條充分發(fā)揮傳統DBMS在數據庫檢索方面的優(yōu)勢和成熟技術(shù)件的產(chǎn)品記錄。所以檢索是這一部分設計的關(guān)鍵而檢索的實(shí)現了網(wǎng)上汽車(chē)零部件信息的遠程采集。系統具有存儲方關(guān)鍵又在于建立科學(xué)的索引機制。便、穩定性強、易于傳輸、擴展性好、效率高、檢索具有自身特為了提高系統的查詢(xún)效率系統中通過(guò)在后臺數據庫中色等優(yōu)點(diǎn)。建立索引表的方式來(lái)實(shí)現索引索引表是通過(guò)映射機制來(lái)實(shí)參考文獻現的每當用戶(hù)添加一條零件產(chǎn)品信息由中間層程序自動(dòng)抽!](美) Dider martin,等.ⅫM高級編程.李頡等譯.北京:機械工業(yè)出版社,2001.233-239取起部件編號零件編號、零件名稱(chēng)和其它重要的信息自動(dòng)形121(美) MICHAEL MORRISON,aaM揭秘M].陸新年等譯成索引條目即實(shí)現映射。并把條目存入后臺數據庫的索引北京:清華大學(xué)出版社,2001.286-307表中。零部件索引表( LBJSYB沖的索引條目格式如表2所31李景春,王強等,基于DOM的ⅹM文檔支持系統[J.南京大學(xué)刁學(xué)報(自科版),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維護的各個(gè)子功能項在實(shí)現時(shí)必須到后臺數據庫首先61BayT,PadJ, Sperberg C M, Extensible Markup Language(xM)1.0檢索索引表匹配相關(guān)查詢(xún)條件。然后打開(kāi)對應的部件庫SpecificationEb/oLi.http://www.w3.org/tr/rec-Xml,1998操作記錄。一個(gè)典型的在部件庫中檢索某產(chǎn)品記錄"的函數段如下7]李志華,施眀輝,孫榮勝基于ⅪML的汽車(chē)零部件網(wǎng)站數據存儲function Load Doc (I與查詢(xún)的實(shí)現[J.無(wú)錫輕工大學(xué)學(xué)報(自科版),2001,5(88)(上接第61頁(yè))的實(shí)際資源本身隔離。這些資源可能來(lái)自一個(gè)關(guān)系數據庫系統、某種活動(dòng)媒體服務(wù)器或者Wcb服務(wù)器上的一個(gè)靜態(tài)ⅹML.2lV· Apparao,S.Bme,M. Champion,rtal文檔等等。如果想把這些數據加載到Java應用中我們可中國煤化xhm0atMdemendation[ EB/OL I以從當前眾多的Jaa語(yǔ)言XML解析器中選用一個(gè)通過(guò)它將Level-1. October 1998[3]IBHCNMHGng XMl and XSL with IBMⅹML數據裝入一個(gè)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

論文截圖
版權:如無(wú)特殊注明,文章轉載自網(wǎng)絡(luò ),侵權請聯(lián)系cnmhg168#163.com刪除!文件均為網(wǎng)友上傳,僅供研究和學(xué)習使用,務(wù)必24小時(shí)內刪除。
欧美AAAAAA级午夜福利_国产福利写真片视频在线_91香蕉国产观看免费人人_莉莉精品国产免费手机影院