reading xml file with vbscript
67,294
Solution 1
First approach:
For Each Elem In NodeList
SET port = Elem.getElementsByTagName("Port")(0)
SET ip = Elem.getElementsByTagName("IPADDRESS")(0)
WScript.Echo "Port " & port.nodeValue & " has IP address is " & ip.nodeValue
Next
Solution 2
This works for me:
sub main
Set nodeList = xmlDoc.documentElement.selectNodes("//interface")
For Each node in nodeList
handleNode(node)
Next
end sub
sub handleNode(node)
Dim port, ipaddress, netmask, attribute
For each elem in node.childNodes
Select Case node.tagName
Case "port"
port = elem.text
Case "ipaddress"
ipaddress = elem.text
Case "netmask"
netmask = elem.text
Case "tag with attributes"
attribute = elem.getAttribute("attributeName")
End Select
Next
WScript.Echo "Port " & port & " has IP address of " & ipaddress & " and useful attribute " & attribute
end sub
Author by
knoxvillain
Updated on March 05, 2020Comments
-
knoxvillain about 4 years
I am trying to write a vbscript to automate the configuration of a storage array. I'm having some difficulty figuring out how best to navigate the XML.
An example section of my XML:
<SERVER> <INTERFACE> <PORT>0</PORT> <IPADDRESS>192.168.1.1</IPADDRESS> <NETMASK>255.255.255.0</NETMASK> </INTERFACE> <INTERFACE> <PORT>1</PORT> <IPADDRESS>192.168.1.2</IPADDRESS> <NETMASK>255.255.255.0</NETMASK> </INTERFACE> </SERVER>
So I want to iterate through each interface (there is 5 in reality) and set the appropriate IP and netmask on the correct interface.
I'm currently doing this:
Set objXMLDoc = CreateObject("Microsoft.XMLDOM") objXMLDoc.async = False objXMLDoc.load("example.xml") Set Root = objXMLDoc.documentElement Set NodeList = Root.getElementsByTagName("interface") port = 0 For Each Elem In NodeList WScript.Echo "Port " & port & " has IP address of " & Elem.text port = port + 1 Next
but there must be a cleaner way do doing this where I can select the interface section and read in the port, ipaddress & netmask, issue the command and then move into the next interface?
Thanks.