劉春雪,冮波,朱明
(1.黑龍江省氣象信息中心,黑龍江哈爾濱 150030;2.佳木斯衛(wèi)星地面站,黑龍江佳木斯 154004;3.鐵力市氣象局,黑龍江鐵力 152500)
如何使用Visual Basic讀取XML文件
劉春雪1,冮波2,朱明3
(1.黑龍江省氣象信息中心,黑龍江哈爾濱 150030;2.佳木斯衛(wèi)星地面站,黑龍江佳木斯 154004;3.鐵力市氣象局,黑龍江鐵力 152500)
XML(Extensible Markup Language)即可擴展標記語言,它與HTML一樣,都是SGML(Standard Generalized Markup Language,標準通用標記語言)。XML是Internet環(huán)境中跨平臺的,依賴于內(nèi)容的技術(shù),是當前處理結(jié)構(gòu)化文檔信息的有力工具。擴展標記語言XML是一種簡單的數(shù)據(jù)存儲語言,使用一系列簡單的標記描述數(shù)據(jù),而這些標記可以用方便的方式建立,雖然XML占用的空間比二進制數(shù)據(jù)要占用更多的空間,但XML極其簡單易于掌握和使用。
XML與Access,Oracle和SQL Server等數(shù)據(jù)庫不同,數(shù)據(jù)庫提供了更強有力的數(shù)據(jù)存儲和分析能力,例如:數(shù)據(jù)索引、排序、查找、相關(guān)一致性等,XML僅僅是展示數(shù)據(jù)。事實上XML與其他數(shù)據(jù)表現(xiàn)形式最大的不同是:它極其簡單。這是一個看上去有點瑣細的優(yōu)點,但正是這點使XML與眾不同。
XML文件是一個樹形結(jié)構(gòu)的文件,文件有一個根節(jié)點,根節(jié)點下面有若干的子節(jié)點。每個子節(jié)點下面可能還有若干的子節(jié)點。
XML語言在氣象業(yè)務(wù)中也正在廣泛的使用,佳木斯衛(wèi)星地面站的軌道報就是XML格式的文件,區(qū)域站的站號表是XML格式的,自動土壤水分觀測系統(tǒng)的站號表文件也是XML格式的。因此,使用編程語言對XML文件的讀取對對工作是一件十分必要的事情。
佳木斯衛(wèi)星地面站是我們國家一個重要的衛(wèi)星地面站,每天接收風(fēng)云2號下發(fā)的衛(wèi)星資料。每天早晨08:00左右,國家氣象衛(wèi)星中心通過風(fēng)云2號將軌道報廣播下來,軌道報文件的格式是XML的,文件的子節(jié)點中里包含著每天佳木斯衛(wèi)星地面站對應(yīng)的接收風(fēng)云2號資料的時間,每天的衛(wèi)星資料接收工作需要讀取這個文件中每個子節(jié)點內(nèi)容,以確定雷達開機的時間。
下面就以如何讀取佳木斯衛(wèi)星地面站的軌道報為例,闡述一下如何通過Visual Basic讀取XML文件。
軌道報存儲路徑及文件名:d:/fy2_trans/IFLAllSat-PassTime20100517.xml
開發(fā)語言:Visual Basic
首先運行VisualBasic,新建工程,并且在引用中選中Microsoft XML5.0。添加命令按鈕其name屬性的值為Command1,添加一個文本框,其name屬性的值為Txt_xml,為了將程序讀取XML文件之后的值顯示出來。
定義一個DOMDocument對象,名字為xml,執(zhí)行xml的Load方法,裝入d:/fy2_trans/IFLAllSatPassTime20100517.xml文件。定義一個IXMLDOMElement對象,其名稱為root,代表XML文件的根節(jié)點,將root對象賦值為xml.documentElement。
Root對象就是XML的根節(jié)點,其屬性text的值就是根節(jié)點及下屬所有子節(jié)點的text值,通常程序中并不使用根節(jié)點的text屬性,因為其包含的內(nèi)容太多;程序通常是使用其某個特定子節(jié)點的內(nèi)容,這樣就需要對其子節(jié)點進行尋找。
root對象的childNodes屬性是一個對象,表示其下屬的所有子節(jié)點,可以通過for each語句來遍歷根節(jié)點下面的所有子節(jié)點。在實際工作中,程序需要讀取一個具體子節(jié)點的內(nèi)容,這個子節(jié)點相對根節(jié)點可能是第一層,也可能是第二層,還有可能是第三層。這時需要通過IXMLDOMNode對象的selectS-ingleNode屬性來實現(xiàn),比如軌道報中經(jīng)常使用其Num子節(jié)點的內(nèi)容、transferMode子節(jié)點的內(nèi)容,transferMode節(jié)點下的BeginTime子節(jié)點的內(nèi)容,對于這樣的多層節(jié)點內(nèi)容,要用多層的selectSingleNod來實現(xiàn)。Node.selectSingleNode(“Num”). Text表示Num子節(jié)點的內(nèi)容,Node.selectSingleNode(“Transfer-Mode”).selectSingleNode(“BeginTime”).Text表示transferMode節(jié)點下的BeginTime的內(nèi)容。
遍歷了root節(jié)點下的各個子節(jié)點內(nèi)容后,可以通過文本框Txt_xml將顯示出來,觀察一下文本框顯示的內(nèi)容,可以判斷程序執(zhí)行的是否成功。
XML語言是一種使用廣泛的標記語言,其容易使用的特性使其在未來會用很大應(yīng)用空間,其在氣象方面的應(yīng)用也越來越多。文章通過詳細的說明,介紹如何通過Visual Basic語言讀取XML文件的內(nèi)容。本文源碼全部經(jīng)過調(diào)試,讀者如果感興趣,自己做實驗調(diào)試一下。
1002-252X(2011)03-0043-01
2011-6-6
劉春雪(1969-),女,黑龍江省哈爾濱市人,哈爾濱廣播電視大學(xué),大專生,工程師.