Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/09/2009, 08:20
Avatar de oso_cat
oso_cat
 
Fecha de Ingreso: septiembre-2009
Ubicación: Granollers
Mensajes: 18
Antigüedad: 14 años, 8 meses
Puntos: 0
Tratar un archivo XML desde vb6

Buenas,

Necesito tratar un archivo XML desde Visual Basic, es decir, necesito una aplicación que sea capaz de leer, modificar y agregar datos al archivo XML.

El archivo XML es del tipo:

<ASP>
- <NLB>
<SERVER p1="0" p2="xxx" p3="80" p4="xx.xx.xx.xx">NOMBRE1</SERVER>
<SERVER p1="0" p2="xxx" p3="80" p4="xx.xx.xx.xx">NOMBRE2</SERVER>
<SERVER p1="0" p2="xxx" p3="80" p4="xx.xx.xx.xx">NOMBRE3</SERVER>
<SERVER p1="0" p2="xxx" p3="80" p4="xx.xx.xx.xx">NOMBRE4</SERVER>
<SERVER p1="0" p2="xxx" p3="80" p4="xx.xx.xx.xx">NOMBRE5</SERVER>
</NLB>
</ASP>

Tengo el siguiente código, que carga los nodos del XML en un ubgrid.
No sé si es del todo correcto, ya que obtengo un error del tipo "Object variable or With block variable not set" donde pongo el texto marcado a color:


************************************************** ***************
Dim ruta As String
Dim row As Integer
Dim documento As MSXML2.DOMDocument30
Set documento = New DOMDocument30

Dim Node As MSXML2.IXMLDOMNode
Dim xmlnlb As MSXML2.IXMLDOMNode
Dim srv As MSXML2.IXMLDOMElement
Dim state As MSXML2.IXMLDOMAttribute
Dim version As MSXML2.IXMLDOMAttribute
Dim max As MSXML2.IXMLDOMAttribute
Dim ip As MSXML2.IXMLDOMAttribute


'EDITAMOS EL GRID DE SERVIDORES
'******************************
grdnlb.AutoSetup 1, 5, True, True, "Servidor |Activo |Versión |Máx. Conexiones |Dirección IP "

'servidor
grdnlb.ColWidth(1) = 100
'activo
grdnlb.ColWidth(2) = 45
'version
grdnlb.ColWidth(3) = 70
'max conexiones
grdnlb.ColWidth(4) = 100
'IP
grdnlb.ColWidth(5) = 110

'columna con checkbox
grdnlb.ColMask(2) = 4

'para la columna que tiene el DropDown
grdnlb.AddLookup 3, "ekon3", "1"
grdnlb.AddLookup 3, "ekon5", "2"


'cargamos el archivo
'********************
ruta = "\\filesrvk\webs\wwwASP\conf.xml"
documento.Load (ruta)

Set xmlnlb = documento.selectSingleNode("//NLB")

grdnlb.rows = 1
row = 0

For Each Node In xmlnlb.childNodes
'On Error Resume Next
row = row + 1

grdnlb.TextMatrix(row, 1) = xmlnlb.childNodes(row).Text
If xmlnlb.childNodes(row).Attributes(0).Text = "1" Then
grdnlb.TextMatrix(row, 2) = 1
End If

grdnlb.TextMatrix(row, 3) = xmlnlb.childNodes(row).Attributes(1).Text
grdnlb.TextMatrix(row, 4) = xmlnlb.childNodes(row).Attributes(2).Text
grdnlb.TextMatrix(row, 5) = xmlnlb.childNodes(row).Attributes(3).Text

If grdnlb.TextMatrix(row, 1) = "" Then grdnlb.RemoveItem (row)


'Set state = srv.Attributes(1)
'Set version = srv.Attributes(2)
'Set max = srv.Attributes(3)
'Set ip = srv.Attributes(4)

grdnlb.rows = grdnlb.rows + 1
Next
************************************************** ***************
Si pongo un "on error resume next" el grid me muestra perfectamente los datos en su sitio, pero me mosquea el error...


Acepto sugerencias, sobre como tratar el archivo, ya que voy descubriendo sobre la marcha....

Gracias anticipadas!