如何使用VBScript通过ID获取XML文件中的值?

时间:2018-10-09 07:03:07

标签: xml vbscript

我有以下XML文件:

<TOOLING>
  <TOOLENVIRONMENT>         
    <TOOL>
      <TOOLSNAME>MyABCVersion1</TOOLSNAME>
      <TOOLSVERSION>12.34.56</TOOLSVERSION>
    </TOOL>  

    <TOOL>
      <TOOLSNAME>MyABCVersion2</TOOLSNAME>
      <TOOLSVERSION>23.45.67</TOOLSVERSION>
    </TOOL> 

    <TOOL>
      <TOOLSNAME>MyABCVersion3</TOOLSNAME>
      <TOOLSVERSION>34.56.78</TOOLSVERSION>
    </TOOL>                      
  </TOOLENVIRONMENT>
</TOOLING>

我想通过使用<TOOLS_VERSION>从XML文件中获取<TOOLS_NAME>的值。这意味着我想在XML文件中搜索“ MyABCVersion1”并检索值“ 12.34.56”。检索后,我想用新版本名称替换版本名称,该名称将在参数中提供。

我已经尝试通过获取文件的第一个标签来尝试以下脚本,但是将来如果顺序更改不起作用:

Set objXMLDoc = CreateObject("Microsoft.XMLDOM")
objXMLDoc.Async = False
objXMLDoc.Load("autorun.xml")
WScript.Echo objXMLDoc.Xml

Set ElemList = objXMLDoc.GetElementsByTagName("TOOLSNAME")
plot = ElemList.item(0).Text
WScript.Echo plot

Set ElemList = objXMLDoc.getElementsByTagName("TOOLSNAME")
plot = ElemList.Item(1).Text
WScript.Echo plot

1 个答案:

答案 0 :(得分:0)

最好用XPath表达式来完成。另外,Microsoft.XMLDOM也已弃用。请改用Msxml2.DOMDocument

Set objXMLDoc = CreateObject("Msxml2.DOMDocument.6.0")
objXMLDoc.Async = False
objXMLDoc.Load("autorun.xml")
xpath = "//TOOL[./TOOLS_NAME/text()='MyABCVersion1']/TOOLS_VERSION"
Set node = objXMLDoc.SelectSingleNode(xpath)
node.Text = WScript.Arguments.Item(0)