国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
msxml.domdocument XML DOM 入門指南_ALEXA排名服務(wù)由發(fā)啦網(wǎng)絡(luò)...
目錄 假如您是 Visual Basic(R) 開發(fā)人員,您收到一些“可擴展的標記語言 (XML)” 文檔格式的數(shù)據(jù)。此時您一定希望得到 XML 文檔中的信息,并將這些數(shù)據(jù)結(jié)合到 Visual Basic 的解決方案中。您必然會自己編寫代碼來分析 XML 文件的內(nèi)容,該文件不過是個文本文件而已。但這決不是多快好省的辦法,而且抹煞了 XML 的優(yōu)點:表現(xiàn)數(shù)據(jù)的結(jié)構(gòu)化方法。

  檢索 XML 文件中的信息的較好方法是使用 XML 分析程序。十分簡單,XML 分析程序是個軟件,它讀 XML 文件并使其中的數(shù)據(jù)成為可用的。作為 Visual Basic 的開發(fā)人員,希望使用支持 XML“文檔對象模型 (DOM)”的分析程序。DOM 定義了分析程序應(yīng)當顯露的標準命令集,使您能夠在程序中訪問 HTML 和 XML 文檔內(nèi)容。支持 DOM 的 XML 分析程序取出 XML 文檔中的數(shù)據(jù),并通過一組可以對它編程的對象來顯露它。在這篇文章中,您將學(xué)會當 XML 文檔被 Microsoft(R) XML Parser 顯露之后,如何通過執(zhí)行 XML DOM 來訪問和操作它 (Msxml.dll)。

  在往下閱讀之前,應(yīng)當看一下原始的 XML 文件,以便對分析程序如何使您的生活更加輕松有個概念。下面的代碼顯露了含有壓縮盤項目的文件 Cds.xml 的內(nèi)容。每一項都含有諸如藝術(shù)家、標題和曲目等信息。 <?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 文檔的布局和預(yù)期內(nèi)容。XML 分析程序可以使用 DTD 來確定文檔是否有效。DTD 僅是一種方法,可以使用它幫助分析程序驗證文檔。還有一個越來越流行的驗證文檔的方法就是“XML 架構(gòu)”。和 DTD 不同的是,我們使用 XML 定義架構(gòu),而 DTD 則使用它們自己“有趣的”語法。

  下面的代碼顯示了 Cds.xml 使用的 Cds.dtd 的內(nèi)容: 這篇文章并不打算深入探討 DTD 和“XML 架構(gòu)”。XML 架構(gòu)語言(英文)是基于 XML 數(shù)據(jù)(英文) 注釋(符合 W3C)的。 XML 的 DOM 是個對象模型,它顯露 XML 文檔的內(nèi)容。W3C 的文檔對象模型 (DOM) 1 級規(guī)格 通常定義了 DOM 應(yīng)當顯露為什么屬性、方法和事件。Microsoft 的 DOM 執(zhí)行方法完全支持 W3C 標準,它的一些其他特性更便于在程序中使用 XML 文件。 通過創(chuàng)建 XML 分析程序的實例來使用 XML DOM。為此,Microsoft 通過 Msxml.dll 中的一組標準 COM 界面來顯露 XML DOM。Msxml.dll 含有使用 XML 文檔時用到的類庫和執(zhí)行代碼。如果您正在使用有腳本的客戶程序,如 Internet Explorer 中的 VBScript 執(zhí)行,則通過用 CreateObject 方法創(chuàng)建分析程序對象的實例,來使用 DOM。 如果您正在使用來自 Active Server Page(ASP) 的 VBScript,則應(yīng)當使用 Server.CreateObject。 如果您正在使用 Visual Basic,可以通過設(shè)置對 MSXML 類庫(在 Msxml.dll 中提供)的引用來訪問 DOM。從 Visual Basic 6.0 內(nèi)部使用 MSXML 的步驟為: 打開工程引用對話框。

  從可用的 COM 對象的列表中選擇 Microsoft XML,v2.0。如果沒有找到該項,則先要獲得 MSXML 類庫。

  這時可以創(chuàng)建分析程序對象實例。

  Dim xDoc As MSXML.DOMDocument

  Set xDoc = New MSXML.DOMDocument 從何處可以找到 Msxml.dll?獲得 MSXML 類庫的辦法有兩種: 可以安裝 Internet Explorer 5.0— MSXML 分析程序是一個完整的組件。

  另一個辦法就是下載可再分布的 Microsoft XML Parser 版本。

  在 Visual Basic 項目中引用了類庫之后,就可以調(diào)用分析程序,加載文檔,使用文檔中的數(shù)據(jù)。

  也許您現(xiàn)在正在疑惑—;我現(xiàn)在使用的是什么?如果您打開了 MSXML 類庫,并用 Visual Basic 6.0 對象瀏覽器檢查它的對象模型,就會發(fā)現(xiàn),對象模型是如此豐富。這篇文章示范了如何使用 DOMDocument 類和 IXMLDOMNode 接口來訪問 XML 文檔。

  


  圖 1. MSXML 分析程序?qū)ο竽P?要加載 XML 文檔,首先必須創(chuàng)建 DOMDocument 類的實例: 當獲得了有效的引用之后,使用加載方法打開文件。MSXML 分析程序能從本地磁盤上加載 XML 文檔,在網(wǎng)上則用 UNC 引用或通過 URL 加載文檔。

  若要從磁盤加載文檔,請使用加載方法創(chuàng)建下面的構(gòu)造: If xDoc.Load("C:\My Documents\cds.xml") Then ' 文檔加載成功。 ' 現(xiàn)在做一些有趣的事情。 Else ' 文檔加載不成功。 End If

  用完該文檔之后,需要將您的對象引用釋放給它。MSXML 分析程序并不顯露明確的關(guān)閉方法。最好的方法是將引用明確設(shè)置為Nothing。 當要求分析程序加載文件時,在默認情況下,它是非同步執(zhí)行的。改變該文檔的布爾 Async 屬性可以改變這個特性。重要的是檢查文檔的 ReadyState 屬性,保證文檔在開始檢查它的內(nèi)容之前就已經(jīng)就緒。ReadyState 屬性可能返回的值為下列 5 種之一: 狀態(tài)

  尚未初始化:加載尚未開始。 0

  正在加載:正在執(zhí)行加載方法。 1

  已經(jīng)加載:加載方法已經(jīng)完成。 2

  交互:對于只讀檢查有足夠的 DOM 可用,數(shù)據(jù)僅被部分分析。 3

  完成:數(shù)據(jù)已被加載和分析,并可用于讀取/寫入操作。 4

  MSXML 分析程序顯露了在加載大的文檔時可以跟蹤加載進程狀態(tài)的事件。當在 Internet 上從 URL 非同步加載文檔時,這些事件也有用。

  若要從 URL 打開文件,請使用完整格式的 URL 指定文件的位置。在文件位置前面必須加 http:// 前綴。

  這里是從 URL 加載文件的例子: xDoc.async = False If xDoc.Load("http://www.develop.com/hp/brianr/cds.xm l") Then ' 文檔加載成功。 ' 現(xiàn)在做一些有趣的事情。 Else ' 文檔加載不成功。 End If

  將文檔的 Async 屬性設(shè)置為 False,分析程序在文檔被完全加載并可以對其進行操作之前,不將控制返回到您的代碼。如果將其設(shè)置為True,您必須在訪問該文檔之前先檢查其 ReadyState 屬性,或者利用 DOMDocument 的事件,在文檔就緒時通知您的代碼。 由于各種各樣的原因,文檔加載很可能失敗。其中最常見的原因可能是傳送到加載方法的文檔名無效。另一個原因可能是 XML 文檔本身是無效的。

  在默認情況下,MSXML 分析程序?qū)Ⅱ炞C在您的文檔中是否指定了 DTD 或架構(gòu)。如果在調(diào)用加載方法之前設(shè)置了 DOMDocument 對象引用的 ValidateOnParse 屬性,就令分析程序不驗證文檔。 Dim xDoc As MSXML.DOMDocument Set xDoc = New MSXML.DOMDocument xDoc.validateOnParse = False If xDoc.Load("C:\My Documents\cds.xml") Then ' 文檔加載成功。 ' 現(xiàn)在做一些有趣的事情。 Else ' 文檔加載不成功。 End If

  但要事先警告您:在制作應(yīng)用程序時關(guān)閉分析程序的驗證特性并不是好方法。不正確的文檔因各種理由導(dǎo)致程序的失敗。至少,它會向用戶提供無效的數(shù)據(jù)。

  不管何種故障的類型,都可以通過訪問 ParseError 對象,要求分析程序向您提供故障信息。若要利用 ParseError 對象的屬性,請將引用設(shè)置為文檔自身的 IXMLDOMParseError 界面。IXMLDOMParseError 界面顯露了 7 種屬性,可以用來研究錯誤的原因。

  下面的例子顯示一個消息框,以及 ParseError 對象給出的所有錯誤信息。 Dim xDoc As MSXML.DOMDocument Set xDoc = New MSXML.DOMDocument If xDoc.Load("C:\My Documents\cds.xml") Then ' 文檔加載成功。 ' 現(xiàn)在做一些有趣的事情。 Else ' 文檔加載不成功。 Dim strErrText As String Dim xPE As MSXML.IXMLDOMParseError ' 獲得 ParseError 對象 Set xPE = xDoc.parseError With xPE strErrText = "Your XML Document failed to load" & _ "due the following error." & vbCrLf & _ "Error #: " & .errorCode & ": " & xPE.reason & _ "Line #: " & .Line & vbCrLf & _ "Line Position: " & .linepos & vbCrLf & _ "Position In File: " & .filepos & vbCrLf & _ "Source Text: " & .srcText & vbCrLf & _ "Document URL: " & .url End With MsgBox strErrText, vbExclamation End If Set xPE = Nothing

  可用 ParseError 對象顯露的信息,將該信息顯示給用戶,將它記錄到錯誤文件中,或者自己試著糾正錯誤。 加載文檔之后,下一步就是從文檔中檢索信息。雖然文檔對象是重要的,但仍可發(fā)現(xiàn),在大部分時間里都在使用 IXMLDOMNode 接口。利用 IXMLDOMNode 接口來讀寫單獨的節(jié)點元素。在做任何事情之前,必須了解 MSXML 分析程序通常支持的 13 種節(jié)點類型。下表列出了幾種最常遇見的節(jié)點類型。 通過 IXMLDOMNode 接口顯露的兩個屬性來訪問節(jié)點類型。NodeType 屬性顯露了 DOMNodeType 項目的枚舉(其中有些已列入上面的表中)。此外,還可以用 NodeTypeString 來檢索節(jié)點類型的文本串。

  當有了文檔的引用之后,就可以開始在節(jié)點的層次中來回移動了。從您的文檔引用可以訪問 ChildNodes 屬性,它提供了從上到下的入口,可以到達文檔中的所有節(jié)點。ChildNodes 屬性顯露了 IXMLDOMNodeList,它支持 Visual Basic For/Each 構(gòu)造。因此,您可以枚舉 ChildNodes 屬性的所有單個節(jié)點。此外,ChildNodes 屬性顯露 Level 屬性,它可以返回現(xiàn)有子節(jié)點的數(shù)量。

  文檔對象不僅顯露了 ChildNodes 屬性,還顯露了所有單個節(jié)點。這樣,與 IXMLDOMNodeHasChildNodes 屬性聯(lián)合起來,就使得在節(jié)點層次中來回移動來檢查元素、屬性和值,變得十分簡單。 需要提醒的一件事情就是,文檔元素和元素值之間的主從關(guān)系。例如,在 CD XML 文檔中,元素<標題>顯露了一首歌的標題。要檢索<標題>元素的實際值,需要尋找 NODE_TEXT 類型的節(jié)點。當找到了具有感興趣數(shù)據(jù)的節(jié)點之后,就可以檢查屬性,甚至通過 ParentNode 屬性到達并訪問其主節(jié)點。 在 XML 文檔中,可以在一組被文檔對象顯露的節(jié)點中來回移動。因為 XML 文檔本來就是分層的,所以編寫在整個文檔中來回移動的遞歸例程要相對容易些。

  LoadDocument 例程打開 XML 文檔。然后 LoadDocument 調(diào)用另一個例程 DisplayNode,它在文檔中真正地來回移動。LoadDocument 將引用當作參數(shù)和整數(shù)值傳遞到當前打開的 XML 文檔的 ChildNodes 屬性,指定從何處開始縮排級。代碼使用縮排參數(shù),在文檔結(jié)構(gòu)的 Visual Basic“快速窗口”中,將文本的顯示格式化。

  DisplayNode 函數(shù)在文檔中來回移動,尋找特定于 NODE_TEXT 類型的節(jié)點。當代碼找到了 NODE_TEXT 類型的節(jié)點之后,它用 NodeValue 屬性來檢索該節(jié)點的文本。此外,當前節(jié)點的 ParentNode 屬性被用來獲得 NODE_ELEMENT 類型節(jié)點的回溯引用。NODE_ELEMENT 類型的節(jié)點顯露了 NodeName 屬性。NodeNameNodeValue 的內(nèi)容被顯示。

  如果通過檢查 HasChildNodes 屬性,確定該節(jié)點有子節(jié)點,則 DisplayNode 遞歸調(diào)用其自身,直到到達該文檔的末尾。

  DisplayNode 例程用 Debug.Print 將信息寫入 Visual Basic 的“快速窗口”: Public Sub LoadDocument() Dim xDoc As MSXML.DOMDocument Set xDoc = New MSXML.DOMDocument xDoc.validateOnParse = False If xDoc.Load("C:\My Documents\sample.xml") Then ' 文檔加載成功。 ' 現(xiàn)在做一些有趣的事情。 DisplayNode xDoc.childNodes, 0 Else ' 文檔加載不成功。 ' 查看前面列出的錯誤信息。 End If End Sub Public Sub DisplayNode(ByRef Nodes As MSXML.IXMLDOMNodeList, _ ByVal Indent As Integer) Dim xNode As MSXML.IXMLDOMNode Indent = Indent + 2 For Each xNode In Nodes If xNode.nodeType = NODE_TEXT Then Debug.Print Space$(Indent) & xNode.parentNode.nodeName & _ ":" & xNode.nodeValue End If If xNode.hasChildNodes Then DisplayNode xNode.childNodes, Indent End If Next xNode End Sub

  DisplayNodeHasChildNodes 屬性來確定它是否應(yīng)當再調(diào)用其自身。您還應(yīng)當用節(jié)點的 Level 屬性并檢查大于 0 的值。 本文只作為入門之用?,F(xiàn)在您可以深入學(xué)習(xí),增進對 XML 和 MSXML 分析程序的了解??梢宰鲈S多有趣的事情,如更新獨立節(jié)點項的值、在文檔中搜索、創(chuàng)建自己的文檔,等等。如果需要更多的實例、文章和下載,請訪問 MSDN Online XML Developer Center。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
利用Excel的VBA來處理XML
PDF生成進入基于Web服務(wù)的模板時代
XmlNode與XmlElement
XML DOM介紹
<VB.net|xml>VB和VB.NET中的XML操作(詳細介紹)
VC 中利用MSXML解析XML文檔
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服