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.