總述:本文主要討論如何利用XMLDOM訪問和維護XML文檔,該XMLDOM由Microsoft 解析器實現。
簡介
作為VB的開發者你可能會接觸XML文檔。你現在想處理XML文檔並把它集成到你的方案中。你可以自己編程解析,把它當普通文本文檔處理,但這樣作太沒有效率了,沒有利用XML的強大之處:它可以結構化的表示數據。
從XML文件中獲得信息最好的辦法是利用XML解析器。解析器,簡單的講,就是一個軟件,它可以使XML文件中的數據易於使用。作為VB的開發者,你可能想得到一個支持Document Object Model (DOM)的解析器。DOM描述了一系列標准的訪問XML和HTML文檔的方法,這些方法解析器應該實現。一個支持DOM的解析器應該把XML中的數據變成一系列對象,這樣就可以對這些對象二次編程。在這篇文章中,你會學習如何利用Microsoft 解析器(Msxml.dll)實現的DOM結構訪問和維護XML文檔。
在我們繼續前進時,讓我們先看一段XML代碼來了解這個解析器怎樣使我們生活變得容易。下面這個叫cds.xml的文檔用來表示一個唱片的各個項目,每個項目包含象主唱,標題,音軌這樣的信息。
<? xml version="1.0"?>
<! DOCTYPE compactdiscs SYSTEM "cds.dtd">
<compactdiscs>
<compactdisc>
<artist type="individual">Frank Sinatra</artist>
<title numberoftracks="4">In The Wee Small Hours</title>
<tracks>
<track>In The Wee Small Hours</track>
<track>Mood Indigo</track>
<track>Glad To Be Unhappy</track>
<track>I Get Along Without You Very Well</track>
</tracks>
<price>$12.99</price>
</compactdisc>
<compactdisc>
<artist type="band">The Offspring</artist>
<title numberoftracks="5">Americana</title>
<tracks>
<track>Welcome</track>
<track>Have You Ever</track>
<track>Staring At The Sun</track>
<track>Pretty Fly (For A White Guy)</track>
</tracks>
<price>$12.99</price>
</compactdisc>
</compactdiscs>
上面的文檔的第二行引用了一個外部DTD(文檔類型描述),DTD描述了一個特定類型的XML的層次結構和能包括的內容。XML解析器利用DTD來驗證XML文檔的正確性。DTD只是你用來讓解析器驗證XML文檔是否合法的辦法的一種,另一個越來越受歡迎的方法是XML Schema,它用XML來描述Schema而不是DTD。與DTD不同的是, Schema是用XML來描述的,也就是使用它自己的"有趣的"語法。
下面的文檔是cds.xml用到的cds.dtd。
<! ELEMENT compactdiscs (compactdisc*)>
<! ELEMENT compactdisc (artist, title, tracks, price)>
<! ENTITY % Type "individual | band">
<! ELEMENT artist (#PCDATA)>
<! ATTLIST artist type (%Type;) #REQUIRED>
<! ELEMENT title (#PCDATA)>
<! ATTLIST title numberoftracks CDATA #REQUIRED>
<! ELEMENT tracks (track*)>
<! ELEMENT price (#PCDATA)>
<!ELEMENT track (#PCDATA)>
本文不會對DTD和XML Schemas討論過深,基於XML-DATA的XML Schema Reference已提交給W3C。
DOM是什麼
XML DOM結構將XML文檔的內容實現為一個對象模型。W3C的DOM Level 1 說明定義了DOM結構如何實現屬性、方法、事件等等。微軟的DOM實現完全支持W3C標准,並且還有許多使程序更容易訪問XML文件的新增特點。
如何使用DOM
要使用DOM,需要創建一個XML解析器的實例。微軟公司在Msxml.dll中創建了一系列標准的COM接口來使創