Vij*_*Nag 4 vbscript xml-attribute xml-parsing
<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>
Run Code Online (Sandbox Code Playgroud)
从上面的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
Run Code Online (Sandbox Code Playgroud)
将名称命名为Parameter,并NodeList(i).Text为我提供4,IP地址,管理员等值.但是我无法获取属性名称,因此我可以直接更改属性的值.
要回答您的问题,您可以使用该getAttribute函数来访问属性的值:
NodeList(i).getAttribute("Name")
Run Code Online (Sandbox Code Playgroud)
您还可以在SelectNodes调用中向XPath表达式添加谓词,以仅检索所需的元素:
Set NodeList = objXMLDoc.documentElement.SelectNodes("//Parameter[@Name = 'DefaultServer' or @Name = 'DefaultDomain']")
Run Code Online (Sandbox Code Playgroud)
这样,您就不必检索并遍历您不感兴趣的Parameter节点.
有点生疏,但我认为您可以使用它通过节点名检索节点值:
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
Run Code Online (Sandbox Code Playgroud)
并设置它,可能
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26525 次 |
| 最近记录: |