我想写一个脚本,将在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