Manejo de XML en Visual Basic 6

Inspirado por el artículo de Moisés sobre Flash y Visual basic ahora yo quiero compartirles un poco de las cosas que uno aprende en el trabajo diario, esta vez será el uso de archivos XML dentro de Visual Basic 6.

Los archivos XML pueden utilizarse para guardar y organizar información. No sustituyen el uso de bases de datos en cuanto a velocidad, pero su punto fuerte radica en que son sencillos e incluso legibles para las personas, no son formatos binarios de 1100110101 que sólo entienda la computadora.

Para quien no los conozca es algo más o menos así:

<Alertas>
<Mensaje>
<ID>001</ID>
<Texto>Texto del mensaje</Texto>
<Imagen>Imagen1.jpg</Imagen>
</Mensaje>
<Mensaje>
<ID>002</ID>
<Texto>Otro mensaje</Texto>
<Imagen>Imagen2.jpg</Imagen>
</Mensaje>
</Alertas>

Ahora vamos al grano, cómo se usan en VB6.

Primero tenemos que agregar a nuestro proyecto la referencia al dll de XML de Microsoft.

Abrimos el menú de referencias en vb
xml1
y buscamos el “Microsoft XML, v3.0”
xml2

Yo recomiendo la versión 3, porque es “viejita” (osea que ya va a estar instalada en muchos equipos) y porque es suficiente para las operaciones básicas.

Ahora, para crear un documento XML basta con declararlo y crearlo de esta forma:

Dim documento As MSXML2.DOMDocument30
Set documento = New DOMDocument30

Ya creado, podremos por ejemplo abrir un archivo:

documento.Load("archivo.xml")

O cargar XML desde un string

documento.loadXML ("<Documento></Documento>")

Esta última instrucción en especial me es útil para crear un documento desde cero.

También vamos a necesitar declarar objetos de tipo “nodo”

Dim nodo As MSXML2.IXMLDOMNode

Y objetos tipo “lista de nodos”

Dim listaNodos As MSXML2.IXMLDOMNodeList

Estos objetos nos ayudarán a mantener referencias a la información que necesitemos dentro de la estructura del XML.

Dentro de un XML podemos leer la información seleccionando datos, por ejemplo podemos hacer búsquedas y obtener el resultado en un objeto IXMLDOMNodeList, con esta instrucción:

set listaNodos = nodo.selectNodes("prueba")

Esto nos devolverá una lista de nodos con los que podemos trabajar, en este caso todos los nodos que se llamen “prueba”.

Existen otros comandos que nos permiten navegar por los nodos de un documento XML.

nodo.baseName 'Devuelve el nombre del nodo

nodo.childNodes
'Permite acceder a los "hijos" de este nodo, de la misma manera se puede saber el numero de hijos con nodo.childNodes.length o acceder a un "hijo" con nodo.childNodes(x) (x es el numero del hijo, empezando desde cero).

nodo.firstChild
'es equivalente a nodo.childNodes(0)

nodo.parentNode
'apunta hacia el padre de este nodo

nodo.Text
'devuelve el contenido de texto de un nodo (por ej. <nodo> texto </nodo> )

Set nodo2 = nodo.appendChild(documento.createElement("Datos"))
'Esta instruccion crea un elemento y lo agrega dentro del objeto "nodo", el "set" es para que al final de la instrucción nos devuelva en "nodo2" una referencia al nodo recién creado.

Y para terminar la función más importante, con la que grabas un XML.

documento.save("archivo.xml")

Con estos comandos básicos es suficiente para crear y guardar documentos, archivos de configuración y otras monerías para tus programas, si necesitas ayuda o tienes alguna duda, para eso son los comentarios!

« | »

20 Respuestas a “Manejo de XML en Visual Basic 6”

  1. Héctor Ortega says:

    Necesito saber como pasar parametros a un web service creado en visual .net, el problema es el siguiente, a ese web service, se le pasa como parametro un Dataset y el cliente que estoy desarrollando debe ser desarrollado en VB6, como le paso un dataset?? a ese web service???

  2. […] Manejo de XML en Visual Basic 6 Comparte y disfruta: These icons link to social bookmarking sites where readers can share and discover new web pages. […]

  3. Cristian says:

    Mi humilde opinión es que para que sea interoperable no debes usar tipos de Datos complejos (DAtaSet), esto funciona unicamente entre aplicaciones .net es decir el cliente debería tambien estar en .net.

    Para solucionar esto, deberías hacer un array de entidades o algo así.

    Espero te haya servido.

  4. Christian says:

    Antes que nada, no tengo mucha experiencia con el manejo de los XML, mi intención únicamente era compartir con la gente algunas funciones que permiten a tus aplicaciones el utilizar archivos xml para guardar datos.

    Desde mi punto de vista, si los archivos de datos son únicamente para tu aplicacion, no importa mucho la interoperabilidad. Tu decides el formato y lo utilizas a tu antojo.

  5. Esteban says:

    Gracias por compartir esto. Utilizimo

  6. Gede448 says:

    No me funsiona el listado de los nodos. No podrias poner un ejemplo sencillo pero completo, recorriendo una lista de nodos y obteniendo los dados ? Gracias

  7. Byron says:

    Orale vos lo voy a probar

  8. jessenia says:

    por favor un ejemplo basico de como sacar informacion de una tabla y colocarla en un archivo xml para luego subirlo a una web.

    gracias por su ayuda

  9. CUt says:

    Muy mal explicado, y con falta de detalles y ejemplos claros y simples.

  10. Diego says:

    Me pareció interesante este artículo, va directo al objetivo en el manejo del XML

    Gracias!!

    Saludos!!

  11. JoseLuis says:

    Gracias por la aportacion. me gustaria profundizar en el tema, me podrias decir donde encuentro la informacion de propiedades, clases y metodos de esta libreria? te lo agradezco, saludos.

    • Christian says:

      Pues yo normalmente utilizo el objeto “empíricamente”, osea, escribo “objeto.” y todo lo que aparezca despues del punto empiezo a explorarlo y ver las funciones y propiedades del objeto.

  12. sacsis says:

    No tengo ninguna experiencia en xml, pero quisiera saber si es posible dar un ejemplo concreto. Por ejemplo: si tengo el nombre de una persona: “Ricardo Pérez” y su domicilio:”Calle No.”, en concreto cómo lo transfiero a xml ?

    Desde ya gracias por la ayuda

  13. Luis says:

    Excelente desarrollo del tema, por favor podrias poner un ejemplo de como leer un xml desde visual basic 6.0 y en enviar los datos del xml a excel
    Gracias, Saludos

  14. Gen says:

    Muy buen tutorial. Llevaba navegando varias horas buscando un comienzo conciso y claro y aqui lo encontré. Para desarrollarme en el tema me basto solo pero este no es un buen comienzo. Es un gran comienzo. Gracias.

  15. Javier says:

    Saludos, queria saber como encvio un xml a un webservice como string, uso el formato del soap que recibe el string
    pero al enviarle un string con “” de xml, no lo envia y no lo reconoce las variables MSXML2, que puedo hacer?

    Gracias, Slds

  16. Javier says:

    en la parte que dice string me refiero a las < tags para abrir los nodos xml

  17. Juan says:

    Que tal, leyendo el foro me doy cuenta que tu podrías ayudarme, fijate que creo el XML pero necesito poner un prefijo a todos los nodos desde el raiz, me podrias decir en que propiedad asigno esto porfavor ya que he intentado con node.prefix pero es de solo lectura.

    Saludos.

Deja una respuesta a Javier

*