2011-11-24 27 views
5

Depolama dizisinin yapılandırmasını otomatikleştirmek için bir vbscript yazmaya çalışıyorum. XML'de nasıl en iyi şekilde gezineceğimi bulmakta zorluk çekiyorum.vbscript ile xml dosyasını okuma

benim XML örneği bölümü:

<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> 

yüzden (gerçekte 5 vardır) her arayüz üzerinden yineleme ve doğru arabirimde uygun IP ve ağ maskesi ayarlamak istiyorum.

Şu anda yapıyorum:

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 

ama arayüz bölümünü seçin ve limanda okuyabilirsiniz Bunu yaparken do daha temiz bir yolu olmalı, daha sonra & ağ maskesi, konu komuta ve IPADDRESS Bir sonraki arayüze geçmek?

Teşekkürler.

cevap

5

İlk yaklaşım:

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 
1

Bu benim için çalışıyor:

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