我想寫一個腳本,將在xml文件中操縱我的一些數據。我對VBScript相當陌生,但有一個VB.NET和VBA背景,所以我覺得我知道我在做什麼。導航VBScript中的XML節點,爲一個虛擬
我認爲有可能是一種更好的方式來瀏覽文件,而不是大量調用InStr()或類似的每一行,看看我在找什麼。我最初的想法是使用我在System.XML的VB.NET中看到的一些方法,因爲我已經看到了節點導航函數和成員。
經過調查,我找不到任何方式將名稱空間(System.XML或其他)導入到VBScript中,而不在網頁上運行。我決定尋找其他的選擇,而不是花更多的時間尋找這個。
原來有其他方法可以做我想做的事情,使用專門處理XML文件導航節點的方法和對象。我瞭解到,這些「系統」的一些常見示例(缺乏更好的術語,因爲我相信這是不恰當的)似乎是DOM和XPath。
我從調查XPath開始(因爲我在幾個地方看到XPath認爲優於DOM,例如:Traversing all nodes in an XML file with VBScript)。我無法找到任何描述vbscript中XPath基礎的內容。路徑和語法的語法有很多,但是我找不到任何描述如何在VBScript中實際調用該語法以利用它的基礎知識。於是我轉向下一個選項。
然後我發現了許多關於DOM的稍微不同的文章/問題/等。所以我試了一下。沒有一個人工作,都給了我錯誤。大多數情況下,它似乎是一個DOM對象永遠不會正確加載。這裏僅僅是我已經嘗試了這種方法的幾個:
從MSDN: a beginner's guide to XML DOM:
Set objParser = CreateObject("Microsoft.XMLDOM")
Dim xDoc As MSXML.DOMDocument
Set xDoc = New MSXML.DOMDocument
If xDoc.Load("C:\My Documents\cds.xml") Then
msgbox("Success!")
Else
msgbox("Failure!")
End If
每次都返回失敗。
dim xmlDom
set xmlDom = createobject("MSXML2.DOMDocument")
xmlDom.async = false
xmlDom.load ("C:\MyFileLocation\MyFile.xml")
,然後我嘗試了一些事情來檢測,如果它的工作就像在xmlDom.documentElement的每個節點名消息框。
我已經嘗試了很多其他的東西,我甚至不記得它們中的大多數。
我根本不知道我可以嘗試什麼,或者爲什麼這不適合我。對於我可以嘗試不同方式的更多東西,我仍然感到茫然,同時仍然有可以工作的語法。
所以我的問題是:如何在VBScript中導航XML文件而不將腳本嵌入到網頁中或以其他方式?我需要知道極端的基礎知識。
我知道我的問題可能似乎愚蠢和無知,因爲這應該是容易獲得的信息,但我真的不能爲我的生活找到基本知識我需要了解如何使用JUST VBScript(不在一個html或asp文件或類似的東西)。
第一種方法永遠不會在VBScript中工作,因爲它是爲VBA編寫的。這是不同的口味。在VBScript中,您不能將類型指派給像Dim XDoc As MSXML.Document這樣的變量。您必須將其設爲Dim,然後使用新創建的文檔(如第二種方法)進行設置。第二種方法的錯誤是路徑名,必須是一個字符串:'xmlDom.load「C:\ MyFileLocation \ MyFile.xml」'。你的問題並不無知,VBScript和XML數據有點困難;這些方法不是很清楚,也沒有很好的記錄。 fmunkert的例子會給你一個好的開始。 – AutomatedChaos 2012-03-16 09:49:06
實際上,第二種方法中的錯誤是我將代碼傳輸到這裏的錯誤,我相信。我很確定我以前是以字符串形式試過的。謝謝你指出,雖然!另外,感謝關於vba vs vbscript的一點:在msdn頁面中,第一行用vbscript給出了一個例子,然後休息在vba中。謝謝msdn:/ – user1167662 2012-03-16 13:31:55