这是我的XML文档:
<FileScan>
<Sites>
<Site>
<Name>Joe</Name>
<Dir>\\webserver\ftp\Joe</Dir>
<Email>Joe@anycompany.com</Email>
<Subject>Hi Joe!</Subject>
</Site>
<Site>
<Name>Ben</Name>
<Dir>\\webserver\ftp\ben</Dir>
<Email>ben@anycompany.com, benjamin@anycompany.com</Email>
<Subject>Hi Ben!</Subject>
</Site>
<Site>
<Name>Ian</Name>
<Dir>\\webserver\ftp\Ian</Dir>
<Email>Ian@anycompany.com</Email>
<Subject>You are fired!</Subject>
</Site>
<Site>
<Name>Mark</Name>
<Dir>\\webserver\ftp\Mark</Dir>
<Email>Mark@anycompany.com</Email>
<Subject>Hi Mark</Subject>
</Site>
</Sites>
</FileScan>
我想做的是:
Open xmlDoc
Do while xmlDoc.eof <> true
store <Name> to varNAME
store <Dir> to varDIR
store <Email> to varEMAIL
store <Subject> to varSUBJECT
Then run an already designed function
Move to next XML <Site> tag
Loop
目前这就是我所拥有的:
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.Async = "False"
xmlDoc.Load("FileScan.xml")
Set colNodes = xmlDoc.selectNodes ("//Site/ (Name|Dir)")
For Each objNode in colNodes
WScript.Echo objNode.nodeName & ": " & objNode.text
Next
我在弹出窗口中获取了Name和Dir,但我似乎无法按元素名称将它们存储到变量中。如何通过其特定名称引用元素并确保它是正确的元素。然后一遍又一遍地这样做,因为网站的数量可能会随着时间而变化?
答案 0 :(得分:1)
首先,请确保在示例中添加结束</FileScan>
。
此代码将向您展示如何解决此问题。一定要使用像cscript / x这样的脚本调试你的脚本.vbs来逐步完成所有事情。
在使用text属性之前,你可能想要检查加载的XML(查找parseError),并且objSite有一个正确的子元素(例如Name,Dir)。
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.Async = "False"
xmlDoc.Load("test.xml")
Set colNodes = xmlDoc.selectNodes ("//Site")
Dim strName
Dim strDir
WScript.Echo "Start"
For Each objSite in colNodes
strName = objSite.selectSingleNode( "Name" ).text
strDir = objSite.selectSingleNode( "Dir" ).text
WScript.Echo "Test: " + strName + ":" + strDir
Next