ストレージアレイの構成を自動化するvbscriptを作成しようとしています。 XMLをナビゲートする最善の方法を見つけるのに少し苦労しています。
私の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>
したがって、各インターフェイス(実際には5つあります)を繰り返し処理し、適切なIPとネットマスクを正しいインターフェイスに設定します。
私は現在これを行っています:
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
しかし、これを行うには、インターフェイスセクションを選択して、ポート、IPアドレス、ネットマスクを読み取り、コマンドを発行してから次のインターフェイスに移動できる、よりクリーンな方法が必要ですか?
ありがとう。
最初のアプローチ:
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
これは私のために働きます:
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