第三章數(shù)據(jù)描述與數(shù)據(jù)交換_第1頁(yè)
第三章數(shù)據(jù)描述與數(shù)據(jù)交換_第2頁(yè)
第三章數(shù)據(jù)描述與數(shù)據(jù)交換_第3頁(yè)
第三章數(shù)據(jù)描述與數(shù)據(jù)交換_第4頁(yè)
第三章數(shù)據(jù)描述與數(shù)據(jù)交換_第5頁(yè)
已閱讀5頁(yè),還剩50頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

數(shù)據(jù)描述與數(shù)據(jù)交換XML簡(jiǎn)介(1)

XML(eXtensibleMarkupLanguage)是由W3C于1998年2月發(fā)布的一種標(biāo)準(zhǔn)。它是SGML的一個(gè)簡(jiǎn)化子集,它將SGML的豐富功能與HTML的易用性結(jié)合到Web應(yīng)用中,以一種開放的自我描述方式定義數(shù)據(jù)結(jié)構(gòu),在描述數(shù)據(jù)內(nèi)容的同時(shí)能突出對(duì)結(jié)構(gòu)的描述,從而體現(xiàn)出數(shù)據(jù)之間的關(guān)系。以XML為基礎(chǔ)的新一代WWW環(huán)境是直接面對(duì)Web數(shù)據(jù)的,不僅可以很好地兼容原有的Web應(yīng)用,而且可以更好地實(shí)現(xiàn)Web中的信息共享與交換。

XML簡(jiǎn)介(2)XML的主要特點(diǎn)如下:(1)可擴(kuò)展性:XML是一種元標(biāo)記語(yǔ)言,用戶可以根據(jù)自己的需要和習(xí)慣來定義標(biāo)記和屬性,從而可以以一種更有意義的方式描述信息,這方面與HTML存在根本性的區(qū)別。XML中的標(biāo)簽是用來標(biāo)識(shí)數(shù)據(jù)內(nèi)容本身的,就像我們?cè)诔绦蛑薪o變量取一個(gè)比較容易理解的名稱一樣。例如:<姓名>小明</姓名>

XML簡(jiǎn)介(3)(2)結(jié)構(gòu)性:XML數(shù)據(jù)存儲(chǔ)格式不受顯示格式的制約,一般包括三個(gè)要素:數(shù)據(jù)、結(jié)構(gòu)以及顯示方式。XML把文件的三要素獨(dú)立開來,分別處理。首先把顯示格式從數(shù)據(jù)內(nèi)容中獨(dú)立出來,保存在樣式文件(StyleSheet)中,這樣如果需要改變文檔的顯示方式,只要修改樣式文件就行了。于是就把資料的內(nèi)容和其表現(xiàn)形式合理地隔開,從而大大提高XML數(shù)據(jù)的可理解性、可交換性和重用性。

XML簡(jiǎn)介(4)(3)平臺(tái)獨(dú)立性:XML文件是純文本,獨(dú)立于平臺(tái)和應(yīng)用。

由于上述特點(diǎn),XML目前正在迅速成為網(wǎng)絡(luò)數(shù)據(jù)描述和交換的標(biāo)準(zhǔn)。

XML文件的正規(guī)性和有效性(1)與HTML相比,XML的格式要嚴(yán)格的多。它包括兩方面的要求,即格式的正規(guī)性和文件的有效性。

實(shí)際使用的XML文件必須是一個(gè)格式正規(guī)的XML文件,否則,解析器或應(yīng)用程序就不能對(duì)其進(jìn)行有效的分析與處理。

XML文件的正規(guī)性和有效性(2)格式正規(guī)的XML文件的主要要求:每個(gè)元素都要有一個(gè)起始標(biāo)簽和一個(gè)結(jié)束標(biāo)簽;每個(gè)XML文檔都要有一個(gè)唯一的根元素;元素和屬性的名字區(qū)分大小寫;元素必須正確的嵌套,在結(jié)構(gòu)上不能交迭,如下的嵌套是不正確的:<a>..<b>..</a>..</b>;有些字符內(nèi)容不能直接使用,必須由其它的字符組合代替(例如使用<;代替<);屬性的值必須包含在引號(hào)(單引號(hào)或雙引號(hào))之中;空元素可以用簡(jiǎn)單的方式描述(如<a></a>可以簡(jiǎn)化成<a/>)。XML文件的正規(guī)性和有效性(3)格式正規(guī)的XML文件由三部分組成:(1)序言(可選)指出現(xiàn)在文件的開始標(biāo)簽或根元素之前的信息,由它們提供有關(guān)XML文件總體情況的信息,如編碼方式、樣式表等。(2)文件元素其定義形式是一個(gè)簡(jiǎn)單的層次樹,每個(gè)文檔都有且僅有一個(gè)根結(jié)點(diǎn),稱其為文件根。(3)尾聲(可選)出現(xiàn)在文件元素之后的內(nèi)容,可包含注釋或空白。XML文件的正規(guī)性和有效性(4)元素是xml文件的組成部分,元素可由其它元素、其它類型數(shù)據(jù)等組成。XML元素間的關(guān)系:由于XML元素必須規(guī)定根元素,所以根元素以下的元素都為子元素,相互之間為兄弟元素關(guān)系。為了數(shù)據(jù)存儲(chǔ)方便,應(yīng)確保子元素內(nèi)容與根元素相關(guān),并且各個(gè)兄弟元素間最好也有邏輯上的關(guān)聯(lián)。XML元素內(nèi)容:XML文件是用于存儲(chǔ)數(shù)據(jù)的,因此它一定要有內(nèi)容,內(nèi)容可以是空白內(nèi)容,也可以是簡(jiǎn)單的文本或單一數(shù)據(jù),也可以是復(fù)雜的多個(gè)數(shù)據(jù)列,甚至還可以是其它的分類子元素。XML元素命名規(guī)則:同Java、C等命名規(guī)則類似,可以是英文字母或中文,可以用數(shù)字和字母作為名字開頭,但名稱中不能出現(xiàn)空格,可以用下劃線取代空格的功能來進(jìn)行詳細(xì)命名,而且在名稱中嚴(yán)禁出現(xiàn)冒號(hào)。

屬性是包含關(guān)于元素的額外信息的元素部分。在XML中,屬性值可以被用來為元素添加額外的說明信息。

XML文件的正規(guī)性和有效性(5)<?XMLversion=“1.0”,encode=“GB2312”?><booklist><book><書名>計(jì)算機(jī)網(wǎng)絡(luò)</書名><作者>謝希仁</作者><出版社>電子工業(yè)出版社/</出版社></book><book><書名>微機(jī)原理及應(yīng)用</書名><作者>周明德</作者><出版社>清華大學(xué)出版社</出版社></book></booklist>XML文件的正規(guī)性和有效性(6)booklistbook書名計(jì)算機(jī)網(wǎng)絡(luò)作者謝希仁出版社電子工業(yè)出版社book書名微機(jī)原理及應(yīng)用作者出版社周明德清華大學(xué)出版社XML文件的正規(guī)性和有效性(7)

有時(shí),XML文件是正規(guī)的還不夠,還要求它是有效的,即要遵循有關(guān)的DTD或Schema所建立的規(guī)則。一個(gè)有效的XML文件只能包含DTD或Schema所規(guī)定的元素和屬性,而且還要符合它們所確定的嵌套規(guī)則和數(shù)據(jù)類型。

當(dāng)我們利用DTD或Schema檢查XML文件的有效性時(shí),就是對(duì)XML文件的確認(rèn)。文檔類型定義DTD

XML不同于HTML,XML并沒有自己固定標(biāo)準(zhǔn)的標(biāo)記以及屬性。而用戶要使用自己的標(biāo)記、屬性或者是實(shí)體參考等就要自行定義它們。而這些定義的工作要在DTD文檔類型定義中進(jìn)行。DTD為XML文件定義了該文件中應(yīng)該包含的或者是可以包含的元素、標(biāo)記、屬性和實(shí)體的一個(gè)清單以及它們之間的相互關(guān)系。

XMLschema

XMLSchema為一類文件建立了一個(gè)模式,規(guī)范了文件中的標(biāo)簽和文本可能的組合形式。它不僅包括了DTD能實(shí)現(xiàn)的所有功能,而且它本身就是規(guī)范的XML文件。XMLSchema提供了一系列新特色,大大彌補(bǔ)了DTD的不足:支持?jǐn)?shù)據(jù)類型、支持屬性分組、可以更新定義的內(nèi)容模式、支持名字空間(名字空間的作用是指明元素是屬于哪個(gè)文件的)。XML的應(yīng)用領(lǐng)域(1)描述數(shù)據(jù)。與樣式表相結(jié)合形成形式多樣的數(shù)據(jù)表現(xiàn)形式。(2)通過對(duì)XML文檔的操作實(shí)現(xiàn)數(shù)據(jù)傳輸。(3)通過統(tǒng)一的DTD或Schema產(chǎn)生的XML文件完成對(duì)異構(gòu)數(shù)據(jù)源的數(shù)據(jù)采集和數(shù)據(jù)整合,消除已有的數(shù)據(jù)孤島,有利于網(wǎng)絡(luò)環(huán)境下的系統(tǒng)集成。(4)使用XML數(shù)據(jù)形式產(chǎn)生圖形、動(dòng)畫、聲音。ASP簡(jiǎn)介

ASP(ActiveServerPage)是一種服務(wù)器端的開發(fā)環(huán)境,利用它開發(fā)者可以把超文本、任何腳本和ActiveX組件組合在一起,從而生成動(dòng)態(tài)的、交互的Web應(yīng)用程序。ASP目前已經(jīng)成為Web應(yīng)用程序開發(fā)的主流環(huán)境。ASP的基本工作原理

ASP文件的擴(kuò)展名均為.ASP,一個(gè)ASP文件相當(dāng)于一個(gè)可執(zhí)行文件,它必須被放在Web服務(wù)器上一個(gè)有執(zhí)行權(quán)限的目錄下。當(dāng)用戶從客戶端瀏覽器輸入一個(gè)ASP文件的地址后,瀏覽器就將這個(gè)URL請(qǐng)求發(fā)給Web服務(wù)器,Web服務(wù)器開始調(diào)用指定的ASP文件,并由嵌入Web服務(wù)器的ASP解釋程序?qū)⒈徽?qǐng)求的ASP文件從頭讀到底,執(zhí)行每一條命令,然后動(dòng)態(tài)生成一個(gè)HTML頁(yè)面并傳送給客戶端瀏覽器。ASP中的XML應(yīng)用(采用VBScript語(yǔ)言)通過ADO獲取數(shù)據(jù)庫(kù)的信息產(chǎn)生XML數(shù)據(jù)島使用DOM對(duì)XML文件進(jìn)行解析和處理ADO簡(jiǎn)介

ADO(ActiveXDataObject)又稱ActiveX數(shù)據(jù)對(duì)象,是微軟推出的一項(xiàng)數(shù)據(jù)庫(kù)鏈接技術(shù),它提供了程序開發(fā)人員實(shí)時(shí)存取各類數(shù)據(jù)庫(kù)(如Access、Oracle、SQLServer、Sybase)的能力,使用ADO可以輕松地完成對(duì)各類數(shù)據(jù)庫(kù)的查詢、存取等操作。

通過ADO連接數(shù)據(jù)庫(kù)

首先,通過ODBC設(shè)置源數(shù)據(jù)庫(kù)db1,然后,聲明一個(gè)Connection對(duì)象cn_ebookstore,用來連接數(shù)據(jù)庫(kù):Setcn_ebookstore=CreateObject("ADODB.Connection")再通過以下語(yǔ)法連接到數(shù)據(jù)庫(kù)db1:cn_ebookstore.Open(DNS=“db1”)查詢需要的信息

假設(shè)通過產(chǎn)品名查詢。數(shù)據(jù)庫(kù)中的“產(chǎn)品”表記錄了產(chǎn)品的詳細(xì)信息。Session("query")="SELECT*FROM產(chǎn)品"&_“WHEREchanmingLIKE‘%”&Request(“txtQuery”)&“%‘”將查詢得到的記錄保存在recordset對(duì)象rsBookdetail中。

SetrsBookdetail=cn_ebookstore.Execute(Session(“query”))XML數(shù)據(jù)島

XML數(shù)據(jù)島是將XML與HTML結(jié)合最直接的方法,它允許直接編寫script來瀏覽XML文件而不需要通過對(duì)象標(biāo)記<OBJECT>的引導(dǎo)。大多數(shù)屬于Well-FormedXML文件的內(nèi)容都可以放在XML數(shù)據(jù)島之中。對(duì)IE5.x而言,可在HTML網(wǎng)頁(yè)中使用標(biāo)記<XML>來建立一個(gè)XML數(shù)據(jù)島,并將XML內(nèi)容放置于該<XML>標(biāo)記之內(nèi)。除此之外,也可通過<XML>標(biāo)記的SRC屬性來指定一個(gè)外部的XML文件作為XML數(shù)據(jù)島的內(nèi)容。要引用XML數(shù)據(jù)島內(nèi)的數(shù)據(jù),可以使用HTML的某些特定標(biāo)記來對(duì)應(yīng)XML數(shù)據(jù)島的某些標(biāo)記,則HTML標(biāo)記就會(huì)自動(dòng)獲取該XML標(biāo)記的數(shù)據(jù)。制作XML數(shù)據(jù)島

制作一個(gè)XML數(shù)據(jù)島,其內(nèi)容就是Recordset對(duì)象rsBookdetail的各個(gè)字段值,也就是該產(chǎn)品的詳細(xì)信息。<xmlid="Detailsdso"><?xmlversion="1.0"?><business><產(chǎn)品名稱><%=rsBookdetail("chanming")%></產(chǎn)品名稱><產(chǎn)地><%=rsBookdetail("chandi")%></產(chǎn)地><等級(jí)><%=rsBookdetail("dengji")%></等級(jí)><計(jì)價(jià)單位><%=rsBookdetail("jijiadanwei")%></計(jì)價(jià)單位><單價(jià)><%=rsBookdetail("danjia")%></單價(jià)><規(guī)格><%=rsBookdetail("guige")%></規(guī)格></business></xml>DOM簡(jiǎn)介

DOM(DocumentObjectModel)即文檔對(duì)象模型,也可以說是一種API的標(biāo)準(zhǔn)。當(dāng)我們將文件視為一個(gè)文檔對(duì)象(DOM)時(shí),我們就可以通過(script)程序語(yǔ)言調(diào)用DOM對(duì)象,來對(duì)該文件做數(shù)據(jù)的訪問,并且利用程序?qū)Λ@取的對(duì)象數(shù)據(jù)做進(jìn)一步的應(yīng)用操作。

各種DOM對(duì)象Node:(1)Document文檔對(duì)象,也是樹狀結(jié)構(gòu)的根結(jié)點(diǎn)。(2)Element元素結(jié)點(diǎn)對(duì)象,代表的是XML的某一元素。(3)Attr屬性結(jié)點(diǎn)對(duì)象,代表的是XML的某一個(gè)元素中的某一個(gè)屬性。(4)Text文字結(jié)點(diǎn)對(duì)象,也就是XML元素或?qū)傩缘膬?nèi)容。Nodelist:結(jié)點(diǎn)列表對(duì)象,是由一些結(jié)點(diǎn)所組成的集合,可以通過索引方式,獲取其中的單一結(jié)點(diǎn)。ParseError:剖析對(duì)象,可以用來剖析XML文件。XMLDOM

XMLDOM的設(shè)計(jì)思路為:將所有的文件放入樹的各個(gè)結(jié)點(diǎn)之中。由于結(jié)點(diǎn)是一個(gè)Node對(duì)象,因此提供了很多函數(shù)和屬性(如firstChild、lastChild、previousSibling、nodeName、nodeValue、nodeType等),通過這些函數(shù)與屬性,配合Script程序,將可以完成所需要的各項(xiàng)工作。結(jié)點(diǎn)對(duì)象的各項(xiàng)屬性說明屬性返回對(duì)象說明范例ownerDocumentDocument對(duì)象返回?fù)碛性摻Y(jié)點(diǎn)的文件對(duì)象currentNode.ownerDocumentParentNodeNode對(duì)象返回該結(jié)點(diǎn)的父結(jié)點(diǎn)對(duì)象currentNode.parentNodeChildNodesNodelist對(duì)象返回該結(jié)點(diǎn)的所有子結(jié)點(diǎn)所形成的結(jié)點(diǎn)列表對(duì)象,并可利用索引方式取出各個(gè)子結(jié)點(diǎn)。currentNode.childNodes(0)currentNode.childNodes(1)……currentNode.childNodes(n)FirstChildNode對(duì)象返回第一個(gè)子結(jié)點(diǎn)對(duì)象currentNode.firstChildLastChildNode對(duì)象返回最后一個(gè)子結(jié)點(diǎn)對(duì)象currentNode.lastChildpreviousSiblingNode對(duì)象返回上一個(gè)兄弟結(jié)點(diǎn)對(duì)象currentNode.previousSiblingNextSiblingNode對(duì)象返回下一個(gè)兄弟結(jié)點(diǎn)對(duì)象currentNode.nextSibling通過DOM對(duì)象讀取XML數(shù)據(jù)島

建立一個(gè)文檔對(duì)象,并通過該對(duì)象讀取XML數(shù)據(jù)島的數(shù)據(jù)。//聲明了一個(gè)XMLDOM文檔對(duì)象docBook,并直接設(shè)置為XML數(shù)據(jù)島Detailsdso的屬性XMLDocument的返回值,也就是整個(gè)XML數(shù)據(jù)島的內(nèi)容SetdocBook=detailsdso.XMLDocument解析XML文件

當(dāng)DOM樹產(chǎn)生之后,所有的數(shù)據(jù)都放在該樹的某些結(jié)點(diǎn)中,于是可以通過對(duì)象的相關(guān)屬性來讀取這些數(shù)據(jù)或?yàn)g覽其他的結(jié)點(diǎn)。

setrootNode=docBook.documentElement//獲取根結(jié)點(diǎn)//觀看根元素下的各個(gè)子元素i=0forEachchildinrootNode.childNodessetC1=rootNodes.childNodes.item(i)MsgBoxC1.xmli=i+1Next

數(shù)據(jù)整合XML數(shù)據(jù)島xmldso(數(shù)據(jù)來自本地端數(shù)據(jù)庫(kù))<xmlid="xmldso"><?xmlversion="1.0"?><employeelist><employee><員工編號(hào)>1</員工編號(hào)><姓名>丁當(dāng)</姓名><出生年月>1979-4-4</出生年月><工資>1600</工資></employee>……</employeelist></xml>XML數(shù)據(jù)島xmldso2(數(shù)據(jù)來自遠(yuǎn)程數(shù)據(jù)庫(kù))<xmlid="xmldso2"><?xmlversion="1.0"?><employeelist><employee><員工編號(hào)>1</員工編號(hào)><家庭地址>南京理工大學(xué)</家庭地址><郵箱>aaa@</郵箱></employee>……</employeelist></xml>整合XML文件(1)利用XMLDOM將兩個(gè)數(shù)據(jù)島xmldso和xmldso2整合在一起,xmldso和xmldso2分別為人員基本情況信息。Setdoc=CreateObject("Microsoft.XMLDOM")Setdoc=xmldso.XMLDocumentSetdoc2=CreateObject("Microsoft.XMLDOM")Setdoc2=xmldso2.XMLDocument

因此,doc和doc2分別具體化為代表XML數(shù)據(jù)島xmldso和xmldso2的Document對(duì)象。

整合XML文件(2)使用selectNodes函數(shù)來獲取所有“employee”元素結(jié)點(diǎn)所形成的結(jié)點(diǎn)列表對(duì)象。Setemployeelist1=doc.selectNodes("http://employee")Setemployeelist2=doc2.selectNodes("http://employee")整合XML文件(3)i=0ForEachnode1inemployeelist1eno1=node1.selectSingleNode("員工編號(hào)").firstchild.nodevaluecount=node1.childnodes.length-1ForEachnode2inemployeelist2eno2=node2.selectSingleNode("員工編號(hào)").firstchild.nodevalueif(eno1=eno2)thenFork=1Tonode2.childnodes.length-1text=node2.childnodes.item(k).firstchild.nodevaluename=node2.childnodes.item(k).nodenameSetnamenode=doc.createElement(name)Settextnode=doc.createTextNode(text)namenode.appendChildtextnodeemployeelist1.item(i).insertBeforenamenodeemployeelist1.item(i).childnodes.item(count)Nexti=i+1EndIfNextNext整合XML文件(4)經(jīng)過數(shù)據(jù)整合后得到的新的XML數(shù)據(jù)島為:<xmlid="xmldso"><?xmlversion="1.0"?><employeelist><employee><員工編號(hào)>1</員工編號(hào)><姓名>丁當(dāng)</姓名><出生年月>1979-4-4</出生年月><工資>1600</工資>

<家庭地址>南京理工大學(xué)</家庭地址><郵箱>aaa@</郵箱></employee>……</employeelist></xml>JSP簡(jiǎn)介

JSP(JavaServerPage)是ASP的Java版本,它提供了許多和ASP一樣的功能,但是也有很多明顯的區(qū)別:ASP適用于Windows平臺(tái),在非Windows平臺(tái)上,JSP的使用比ASP多得多?,F(xiàn)在JSP的腳本語(yǔ)言只限于Java,將來將支持更多的腳本語(yǔ)言。JSP允許創(chuàng)建新標(biāo)簽,允許擴(kuò)展語(yǔ)言本身。JSP中的XML應(yīng)用通過JDBC連接數(shù)據(jù)庫(kù),獲取數(shù)據(jù)庫(kù)的信息動(dòng)態(tài)產(chǎn)生XML文件使用DOM對(duì)XML文件進(jìn)行解析和處理JDBC簡(jiǎn)介

JDBC(Java數(shù)據(jù)庫(kù)連接,JavaDatabaseConnectivity)是一種基于X/Open的SQL命令級(jí)接口,它由一組用Java語(yǔ)言編寫的類和接口組成,使得程序開發(fā)人員可以建立一個(gè)與數(shù)據(jù)庫(kù)無(wú)關(guān)、與平臺(tái)無(wú)關(guān)的編程接口來建立數(shù)據(jù)庫(kù)應(yīng)用程序。

使用JDBC連接數(shù)據(jù)庫(kù)

//加載驅(qū)動(dòng)程序,下面的代碼為加載MySQL驅(qū)動(dòng)程序Class.forName("com.mysql.jdbc.Driver");//注冊(cè)MySQL驅(qū)動(dòng)程序DriverManager.registerDriver(newcom.mysql.jdbc.Driver());//用適當(dāng)?shù)尿?qū)動(dòng)程序連接到數(shù)據(jù)庫(kù)StringdbUrl="jdbc:mysql://localhost:3306/DB?useUnicode=true&characterEncoding=GB2312";StringdbUser="dbuser";StringdbPwd="1234";//建立數(shù)據(jù)庫(kù)連接con=java.sql.DriverManager.getConnection(dbUrl,dbUser,dbPwd);//創(chuàng)建一個(gè)JDBC聲明stmt=con.createStatement();生成XML文件(1)

//首先獲得一個(gè)XML文件的解析器,并解析XML文件生成DOM文檔的接口類,以便訪問DOM。DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();DocumentBuilderbuilder=factory.newDocumentBuilder();//然后,定義一個(gè)Document接口描述對(duì)應(yīng)于整個(gè)XML文件的文檔樹,并創(chuàng)建一個(gè)根元素。Documentdocument=builder.newDocument();Elementroot=document.createElement(“公文”);//新建結(jié)點(diǎn)root1,節(jié)點(diǎn)名稱為“公文信息”。Elementroot1=document.createElement(“公文信息”);//新建節(jié)點(diǎn)item,節(jié)點(diǎn)名稱為”保密期限“,將變量baomiqixian的值作為一個(gè)文字節(jié)點(diǎn)的值,并將此文字節(jié)點(diǎn)作為item的子節(jié)點(diǎn)。而”保密期限“又作為”公文信息“的子節(jié)點(diǎn)。Elementitem=document.createElement(“保密期限”);item.appendChild(document.createTextNode(baomiqixian));root1.appendChild(item);root.appendChild(root1);生成XML文件(2)//類TransformerFactory實(shí)現(xiàn)獲得將DOM文檔轉(zhuǎn)化為XML文件的轉(zhuǎn)換器TransformerFactorytfactory=TransformerFactory.newInstance();//類Transformer實(shí)現(xiàn)轉(zhuǎn)化APITransformertransformer=tfactory.newTransformer();//將DOM對(duì)象轉(zhuǎn)化為DOMSource類對(duì)象,該對(duì)象表現(xiàn)為轉(zhuǎn)化成別的表達(dá)方式的信息容器DOMSourcesource=newDOMSource(document);//獲得一個(gè)StreamResult類對(duì)象,該對(duì)象是DOM文檔轉(zhuǎn)化成的其他形式的文檔的容器。此處將轉(zhuǎn)化為gongwen1.xml文件。StreamResultresult=newStreamResult(newFile("gongwen1.xml"));//調(diào)用API,將DOM文檔轉(zhuǎn)化為XML文件transformer.transform(source,result);生成XML文件范例<?xmlversion="1.0"encoding="GB2312"?><公文><公文信息><公文標(biāo)題>數(shù)據(jù)交換平臺(tái)測(cè)試通知</公文標(biāo)題>

<撰文時(shí)間>2006-6-1</撰文時(shí)間>

<主題詞>通知</主題詞>

<公文字號(hào)>0001號(hào)</公文字號(hào)>

<保密期限>1年</保密期限>

<密級(jí)>機(jī)密</密級(jí)>

<文種>通知</文種>

<緊急程度>緊急</緊急程度>

<發(fā)文單位>網(wǎng)管中心</發(fā)文單位>

<發(fā)送單位>XXX市財(cái)政局</發(fā)送單位>

<抄送單位>XXX市房產(chǎn)管理局</抄送單位>

<公文正文>正文(略)</公文正文>

</公文信息>

</公文>遍歷XML文件以范例的XML文件為例://獲得根元素的子節(jié)點(diǎn)列表NodeListnodelist=document.getElementByTagName(“公文”);//用遞歸方法實(shí)現(xiàn)DOM文檔的遍歷GetElement(nodelist);//GetElement方法PublicstaticvoidGetElement(NodeListnodelist){for(inti=0;i<nodelist.getLength();i++){Nodecnode=nodelist.item(i);//如果節(jié)點(diǎn)為元素節(jié)點(diǎn),則遞歸調(diào)用GetElementif(cnode.getNodeType()==Node.ELEMENT_NODE){GetElement(cnode.getChildNodes());}elseif(cnode.getNodeType()==Node.TEXT_NODE){//如果節(jié)點(diǎn)為文字節(jié)點(diǎn),則顯示信息System.out.println(cnode.getNodeValue().trim();}}}增加節(jié)點(diǎn)(1)

還是以范例的XML文件為例,要在公文中增加一個(gè)新的公文的信息。//獲得根對(duì)象,此處“公文”為根元素。Elementroot=document.getDocumentElement();//在DOM文檔中增加一個(gè)Element節(jié)點(diǎn)“公文信息”。Elementxinxi=document.createElement(“公文信息”);//在DOM文檔中增加一個(gè)Element節(jié)點(diǎn)“公文標(biāo)題”。Elementtitle=document.createElement(“公文標(biāo)題”);//在DOM文檔中增加一個(gè)Text節(jié)點(diǎn)。TexttextMsg=document.createTextNode(“公務(wù)員錄取通知”);title.appendChild(textMsg);//把title節(jié)點(diǎn)轉(zhuǎn)化為“公文信息”的子節(jié)點(diǎn)。xinxi.appendChild(title);//把“公文信息”轉(zhuǎn)化為根節(jié)點(diǎn)“公文”的子節(jié)點(diǎn)。root.appendChild(xinxi);

增加節(jié)點(diǎn)(2)增加節(jié)點(diǎn)后的XML文件如下(增加的節(jié)點(diǎn)用紅色字表示):<?xmlversion="1.0"encoding="GB2312"?><公文><公文信息><公文標(biāo)題>數(shù)據(jù)交換平臺(tái)測(cè)試通知</公文標(biāo)題>

<撰文時(shí)間>2006-6-1</撰文時(shí)間>

<主題詞>通知</主題詞>

……

</公文信息>

<公文信息><公文標(biāo)題>公務(wù)員錄取通知</公文標(biāo)題>

</公文信息>

</公文>刪除節(jié)點(diǎn)

假設(shè)我們要?jiǎng)h除范例中“公文標(biāo)題”這一節(jié)點(diǎn)。//獲得根對(duì)象。Elementroot=document.getDocumentElement();//獲得根元素的子節(jié)點(diǎn),也就是“公文信息”節(jié)點(diǎn)Nodenode=element.getFirstChild();//利用removeChild()方法刪除”公文標(biāo)題“子節(jié)點(diǎn)對(duì)象node.removeChild(node.getFirstChild());

修改節(jié)點(diǎn)內(nèi)容(1)

這里將修改范例XML文件中的“公文標(biāo)題”的值。//獲得根對(duì)象,此處“公文”為根元素。Elementroot=document.getDocumentElement();//獲得根元素的子節(jié)點(diǎn)對(duì)象,也就是“公文”的子節(jié)點(diǎn)Nodenode=root.getFirstChild();//獲得“公文信息”的第一個(gè)子節(jié)點(diǎn),也就是“公文標(biāo)題”子節(jié)點(diǎn)。Nodenode1=node.getFirstChild();//在DOM文檔中新建一個(gè)Text節(jié)點(diǎn)TexttextMsg=document.createTextNode(“數(shù)據(jù)修改通知");//獲得原來“公文標(biāo)題”的子節(jié)點(diǎn)——文字結(jié)點(diǎn)對(duì)象Nodetext1=node1.getFirstChild();//用新建的文字節(jié)點(diǎn)對(duì)象替換原有的,達(dá)到修改的目的。node1.replaceChild(textMsg,text1);

修改節(jié)點(diǎn)內(nèi)容(2)修改后的XML文件如下所示(紅色字表示修改內(nèi)容):<?xmlversion="1.0"encoding="GB2312"?><公文><公文信息><公文標(biāo)題>數(shù)據(jù)修改通知</公文標(biāo)題>

<撰文時(shí)間>2006-6-1</撰文時(shí)間>

<主題詞>通知</主題詞>

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論