5
<Requirement Description="description" Operation="Configure">
   <Action ID="1000" Name="Split">
     <Contract>
       <Parameter Name="Version">4</Parameter>
       <Parameter Name="DefaultServer">192.168.00.</Parameter>
       <Parameter Name="DefaultUser">administrator</Parameter>
       <Parameter Name="DefaultPassword">password</Parameter>
       <Parameter Name="DefaultDomain">192.168.00.00</Parameter>
       <Parameter Name="Split">1</Parameter>
     </Contract>
   </Action>
</Requirement>

从上面的 XML 文档中,我的目标是从 VBScript 中替换属性默认服务器和默认域的 IP 地址。

Set objXMLDoc = CreateObject("Microsoft.XMLDOM")
objXMLDoc.async = False
objXMLDoc.load(XMLFullPath) 
Set NodeList = objXMLDoc.documentElement.SelectNodes("//Parameter")

NodeList(i).nodeName 

将名称作为参数并NodeList(i).Text给我 4、IP 地址、管理员等值。但是我无法获取属性名称,因此我可以直接更改属性的值。

4

2 回答 2

6

要回答您的问题,您可以使用该getAttribute函数来访问属性的值:

NodeList(i).getAttribute("Name")

您还可以在SelectNodes调用中向 XPath 表达式添加谓词以仅检索所需的元素:

Set NodeList = objXMLDoc.documentElement.SelectNodes("//Parameter[@Name = 'DefaultServer' or @Name = 'DefaultDomain']")

这样,您不必检索和循环访问您不感兴趣的 Parameter 节点。

于 2012-10-16T05:35:05.900 回答
2

有点生疏,但我认为您可以使用它通过节点名检索节点值:

Function getTag(nList, nName)
    Dim i
    i = 0
    Do while i < nList.childNodes.length
        if (nList.childNodes(i).nodeName = nName) then
            getTag = nList.childNodes(i).childNodes(0).text
            Exit Function
        end if
        i = i + 1
    Loop
End Function

设置它,可能

Sub setTag(nList, nName, val)
    Dim i
    i = 0
    Do while i < nList.childNodes.length
        if (nList.childNodes(i).nodeName = nName) then
            nList.childNodes(i).childNodes(0).text = val
            Exit Sub
        end if
        i = i + 1
    Loop
End Sub
于 2012-10-15T08:19:27.817 回答