1.XML DOM是什麼
迄今為止,我們一直將 XML 作為這樣一種工具,用它描述數據的結果是可供人閱讀的文檔。其實, XML 最令人稱贊的功能恐怕要算是它表現信息結構的能力,即文檔各個部分之間的關系以及它們如何組織成為一個具有確定意義的整體--正如數據庫中的表能夠描述各部分數據的關系。如結構良好規則和更為嚴格的 DTD 定義所指出的, XML 文檔內各個元素之間不是簡單的前後次序關系,而是具有嚴格的嵌套、依賴關系。 XML 文檔作為一個具有確定意義的信息整體,其部分語義正是通過這種結構關系得以體現。
在 DOM 下,程序所面對的XML文檔不是一個文本流,而是一棵對象樹。程序可以方便地提取或修改任意對象或它的屬性,這些屬性可以是與當前對象對應的元素的子元素列表,也可以是它所包含的文本。所有 XML 文檔具有以下特征:它的所有元素分層嵌套形成一個樹形結構。因此,我們不僅可以簡單地把一個xml文件看成是一個文本文件,而且還可以看成如下的標記樹。在這棵標記樹中,每一個 XML 元素對應一個樹節點,所有子節點都依次嵌套於它的父節點。
文檔對象模型就是這樣一個結構化文檔編程接口( API ),它定義了文檔的邏輯結構以及訪問和操縱文檔的方法。使用 DOM 模型,程序員可以方便地創建文檔、導航其結構,或增加、修改、刪除、移動文檔的任何成份。DOM 標准的出現大大簡化了結構化文檔在編程環境中的處理。例如,利用 DOM 可以很方便地寫出一個圖形化的 XML 文檔編輯程序:用圖形表示文檔中各個元素以及它們之間的關系,用戶可以非常直觀地編輯文檔結構、元素、屬性。本文後面的" XML 相關軟件"這一節列出了許多 XML 編輯軟件,其中很大一部分都支持這種方式的 XML 文檔編輯。
目前,微軟公司的IE5浏覽器支持XML與DOM的結合運用,主要提供XMLDOMDocument、
XMLDOMNode、XMLDOMNodeList、XMLDOMNamedNodeMap等四個DOM對象。
2.在腳本中使用DOM
要使用DOM,需要創建一個XML解析器的實例。微軟公司在Msxml.dll中創建了一系列標准的COM接口來使創建實例變得可能。Msxml.dll中包含了類型庫和可應用的代碼,這些你可以用來處理XML文件。如果你使用可實現腳本的客戶端,比如VBScript 和IE,你可以使用CreateObject方法來得到解析器的實例。
Set objParser = CreateObject( "Microsoft.XMLDOM")
如果你使用ASP(Active Server Page),你使用Server.CreateObject方法。
Set objParser = Server.CreateObject( "Microsoft.XMLDOM" )
你可以通過兩個途徑獲得Msxml.dll。你可以安裝IE5.0,MSXML解析器是其中集成的部件;或者你可以到相關網站上下載它。如果你打開MSXML庫,用Visual Basic 6.0對象察看器察看其中的對象模型,你會發現這個模型用很豐富的屬性和方法。有關XML DOM的詳細信息,請參閱微軟的MSDN。下面是一個使用XML DOM的例子:
<Html>
<HEAD>
<TITLE>DOM 范例</TITLE>
<SCRIPT LANGUAGE="JavaScript" FOR="window" EVENT="onload">
var source = new ActiveXObject("Microsoft.XMLdom");
//創建DOM實例,並裝載文件
source.load("report.XML");
var style = new ActiveXObject("Microsoft.XMLdom");
style.load("report.xsl");
//將XML文件依XSL文件中的設定轉成Html的輸出格式
document.all.item("XML&xsl").innerHtml
=source.transformNode(style.documentElement);
</SCRIPT>
</HEAD>
<BODY>
<DIV ID="XML&xsl"></DIV>
</BODY>
</Html>
3.在 Visual Basic 中使用 DOM
我們使用下面的 XML 作為例子:
<contacts>
可以按如下方式綁定到 ADO 記錄集:
<person>
<name>Mark Hanson</name>
<telephone>206 765 4583</telephone>
</person>
<person>
<name>Jane Smith</name>
<telephone>425 808 1111</telephone>
</person>
</contacts>
(1)創建新的 VB 6.0 項目。
(2)添加對 Microsoft ActiveX Data Objects 2.1 或更高版本、Microsoft
Data Adapter Library 和 Microsoft XML 2.0 版的引用。
(3)用下面的代碼將 XML 數據加載到 XML DSO 控件中:
Dim dso As New XMLDSOControl
Dim doc As IXMLDOMDocument
Set doc = dso.XMLDocument
doc.Load ("d:test.XML")
(4)用下面的代碼將 DSO 映射到使用 DataAdapter 的新記錄集對象中:
Dim da As New DataAdapter
(5)訪問數據:
Set da.Object = dso
Dim rs As New ADODB.Recordset
Set rs.DataSource = da
MsgBox rs.FIElds("name").Value
結果顯示字符串"Mark Hanson"