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

上記の XML ドキュメントから、私の目的は、属性のデフォルト サーバーとデフォルト ドメインの両方の IP アドレスを VBScript から置き換えることです。

Set objXMLDoc = CreateObject("Microsoft.XMLDOM")
objXMLDoc.async = False
objXMLDoc.load(XMLFullPath) 
Set NodeList = objXMLDoc.documentElement.SelectNodes("//Parameter")

NodeList(i).nodeName 

名前をパラメーターとしてNodeList(i).Text指定し、4、IP アドレス、管理者などの値を指定します。しかし、属性の値を直接変更できるように、属性名を取得できません。

4

2 に答える 2

6

あなたの質問に答えるために、getAttribute関数を使用して属性の値にアクセスできます。

NodeList(i).getAttribute("Name")

呼び出しの XPath 式に述語を追加してSelectNodes、目的の要素のみを取得することもできます。

Set NodeList = objXMLDoc.documentElement.SelectNodes("//Parameter[@Name = 'DefaultServer' or @Name = 'DefaultDomain']")

このように、関心のないパラメータ ノードを取得してループする必要はありません。

于 2012-10-16T05:35:05.900 に答える
2

少しさびていますが、これを使用してノード名でノード値を取得できると思います。

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

そして、それを設定するには、おそらく

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
于 2012-10-15T08:19:27.817 に答える