net manejo leer ejemplos atributos vbscript xml-parsing xml-attribute

vbscript - leer - manejo de xml en c#



Recuperar el valor de un atributo XML en VBS (2)

Un poco oxidado, pero creo que puedes usar esto para recuperar el nodevalue por nodename:

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

Y para establecerlo, probablemente

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

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

A partir del documento XML anterior, mi objetivo es reemplazar la dirección IP de los atributos de servidor predeterminado y dominio predeterminado de un VBScript.

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

Dar nombre como parámetro y NodeList(i).Text me da valores como 4, dirección IP, administrador y otros. Pero no puedo obtener el nombre del atributo para poder cambiar directamente el valor del atributo.


Para responder a su pregunta, puede usar la función getAttribute para acceder al valor de un atributo:

NodeList(i).getAttribute("Name")

También puede agregar un predicado a la expresión XPath en su llamada SelectNodes para recuperar solo los elementos deseados:

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

De esta manera, no tiene que recuperar y recorrer los nodos de parámetro que no le interesan.