чтение XML-файла с помощью VBScript - PullRequest
5 голосов
/ 24 ноября 2011

Я пытаюсь написать 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

но должен быть более чистый способ сделать это, где я могу выбратьраздел интерфейса и чтение в порту, ipaddress & netmask, введите команду и затем перейдите в следующий интерфейс?

Спасибо.

Ответы [ 2 ]

5 голосов
/ 24 ноября 2011

Первый подход:

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 голос
/ 04 марта 2016

Это работает для меня:

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