XSL(可擴(kuò)展樣式表語言)是對(duì)CSS的一種擴(kuò)展,功能比CSS強(qiáng)大得多。XML鏈接是在HTML鏈接的功能之上加以擴(kuò)展,可以支持更為復(fù)雜的鏈接,通過XML鏈接,不僅可以在XML文件之間建立鏈接,還可以建立其他類型數(shù)據(jù)之間的鏈接,其規(guī)范分為三個(gè)部分:XLink語言,XPointer語言和XML Base.
XML標(biāo)準(zhǔn)體系中還有其他很多技術(shù),比如針對(duì)DTD的不足而提出的XML Schema,對(duì)XML文檔進(jìn)行結(jié)構(gòu)話處理的DOM等,由于篇幅的關(guān)系,在這就不一一列舉,不熟悉的請(qǐng)參考有關(guān)書籍。 好了,現(xiàn)在讓我們開始進(jìn)入正題——對(duì)XML的操作。首先,請(qǐng)保證您的電腦中有最新版本的MSXML,微軟XML核心服務(wù)(MSXML)版本4.0提供了從Visual Basic6.0加載和存儲(chǔ)XML文檔的工具。若沒有,請(qǐng)到http://msdn.microsoft.com/xml/default.asp中下載最新版本的MSXML,并安裝在計(jì)算機(jī)上。在Visual Basic 6.0中使用Microsoft XML V4.0對(duì)象引用其他對(duì)象一樣,首先在工程菜單中選擇引用菜單項(xiàng),選擇Microsoft V4.0,單擊OK,一切完成后就現(xiàn)在就可以在VB應(yīng)用程序中添加XML對(duì)象了。如圖: 萬事俱備,我們先用VB和MSXML的COM接口的DOM實(shí)現(xiàn)的一個(gè)例子來對(duì)XML操作進(jìn)行初步的了解吧。 首先聲明下面要用的幾個(gè)對(duì)象的變量:
文檔對(duì)象模型(DOM)使用了一系列相應(yīng)的對(duì)象描述了XML文檔的等級(jí)狀態(tài),DOMDocument類是一個(gè)描繪XML文檔的DOM結(jié)構(gòu)的MSXML類。DOMDocument類僅僅提供了很少的幾個(gè)有用的屬性和方法,例如:Load方法載入一個(gè)xml文件,loadxml方法將字符串作為xml數(shù)據(jù)添加到對(duì)象中。DOMDocument的xml屬性返回文檔的xml描述,可以顯示這些返回值看看這些文檔究竟是什么樣子,也可以將它存儲(chǔ)為一個(gè)文件,DOMDocument對(duì)象的documentElement屬性表示文檔數(shù)據(jù)的根結(jié)點(diǎn),通常情況下操作XML文檔都從這里開始。DOMDocument提供了幾種創(chuàng)建新節(jié)點(diǎn)的方法。CreateElement方法為文檔創(chuàng)建一個(gè)新的元素節(jié)點(diǎn),其他創(chuàng)建節(jié)點(diǎn)的方法有createAttribute, createProcessingInstruction, 和 createTextNode,在這里就不一一介紹了。 IXMLDOMNode類描述了一個(gè)節(jié)點(diǎn),該類提供了一系列用于搜索和操縱XML文檔的屬性和方法。selectSingleNode 方法用于搜索指定節(jié)點(diǎn)的后代,用于搜索指定節(jié)點(diǎn)路徑的語言稱為XPATH,XPATH非常棘手,本文就不詳細(xì)說明其規(guī)范了。在IXMLDOMNode對(duì)象中,有許多有用的屬性值: attributes.節(jié)點(diǎn)屬性集合 nodeName.節(jié)點(diǎn)的標(biāo)記名 nodeTypeString.節(jié)點(diǎn)的類型 ownerDocument.返回DOMDocument對(duì)象包含的節(jié)點(diǎn) text.表示節(jié)點(diǎn)包含的文本內(nèi)容。如果該節(jié)點(diǎn)包含其他節(jié)點(diǎn),那么text代表了所有節(jié)點(diǎn)的文本內(nèi)容的組合。 xml.給出了節(jié)點(diǎn)的xml內(nèi)容,例如:"<Email>hongwanfu@yahoo.com</Email>". ChildNodes集合包含了節(jié)點(diǎn)的子節(jié)點(diǎn)。要給節(jié)點(diǎn)增加一個(gè)子節(jié)點(diǎn),首先必須給使用DOMDocument對(duì)象的節(jié)點(diǎn)創(chuàng)建方法,然后將這個(gè)新建的節(jié)點(diǎn)加入到父節(jié)點(diǎn)的childNodes集合中。 ChildNodes集合包含了節(jié)點(diǎn)的子節(jié)點(diǎn)。要給節(jié)點(diǎn)增加一個(gè)子節(jié)點(diǎn),首先必須給使用DOMDocument對(duì)象的節(jié)點(diǎn)創(chuàng)建方法,然后將這個(gè)新建的節(jié)點(diǎn)加入到父節(jié)點(diǎn)的childNodes集合中。 由于每個(gè)節(jié)點(diǎn)類型都有不同的訪問方法和內(nèi)容限制,有時(shí)候使用特定類型的節(jié)點(diǎn)要比使用通用 IXMLDOMNode 對(duì)象更容易。要做到這一點(diǎn),需要使用 IXMLDOMElement 對(duì)象來處理 XML 數(shù)據(jù)元素和屬性。正如元素可以包含 XML 數(shù)據(jù)文件中的子元素、文本、注釋、處理說明、CDATA 部分和實(shí)體引用一樣,IXMLDOMElement 對(duì)象也可以包含 IXMLDOMElement、IXMLDOMText、IXMLDOMComment、IXMLDOMProcessingInstruction、IXMLDOMCDATASection 和 IXMLDOMEntityReference 對(duì)象。可以通過使用 IXMLDOMElement 對(duì)象的 getAttribute 和 setAttribute 方法來訪問屬性;或者通過 IXMLDOMElement 對(duì)象的 attributes 屬性,將屬性作為 IXMLDOMNamedNodeMap 對(duì)象進(jìn)行管理。有關(guān)使用這些方法和對(duì)象的詳細(xì)信息,請(qǐng)參閱 MSXML 4.0 SDK Help。 接下來我們要做的是生成一個(gè)XML DOMDocument 對(duì)象 :
生成根節(jié)點(diǎn)并把它設(shè)置為文件的根 :
生成孩子節(jié)點(diǎn)添加到根節(jié)點(diǎn)上去,并且為這個(gè)節(jié)點(diǎn)設(shè)置一個(gè)屬性 :
取得元素節(jié)點(diǎn)的接口,添加屬性:
最后,寫XML文件:
下面就是上面程序生成的CreateXMLFile.xml文件的內(nèi)容如圖: |
|