<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替换属性default server和default domain的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地址,管理员等值。但是我无法获取属性名称,因此我可以直接更改属性的值。
答案 0 :(得分:5)
要回答您的问题,您可以使用getAttribute
功能访问属性的值:
NodeList(i).getAttribute("Name")
您还可以在SelectNodes
调用中的XPath表达式中添加谓词,以仅检索所需的元素:
Set NodeList = objXMLDoc.documentElement.SelectNodes("//Parameter[@Name = 'DefaultServer' or @Name = 'DefaultDomain']")
这样,您就不必检索并遍历您不感兴趣的参数节点。
答案 1 :(得分:1)
有点生疏,但我认为您可以使用它来通过nodename检索nodevalue:
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