Está usted en Indice > Construcción > Lenguajes > XML > Lecciones y Paso a Paso > Document Object Model y Visual Basic en XML
Construcción
Maletín
Utilidades
Cursos
Promoción
Rentabilidad
Zona Novatos
Foros
Acceso a tu cuenta

Document Object Model y Visual Basic en XML

Document Object Model y Visual Basic en XML

Vamos a ver a continuación como se maneja el DOM (Document Object Model) implementado por el Microsoft XML Parser, a través de Visual Basic. Aunque los detalles pueden cambiar, la forma de trabajar va a ser similar para otros parsers en otras plataformas de desarrollo (VC++, Java, etc.)

El parser o analizador de XML es el programa que lee el documento XML y hace que los datos que contiene estén accesibles de una forma u otra. Además, el parser puede tener otras funcionalidades, como validar el documento contra una DTD o un schema.

El parser de Microsoft (msxml.dll), que se distribuye con el IE5, hace eso mismo, haciendo que los datos estén disponibles a trás de una serie de objetos que el programador puede utilizar.

Este parser podemos utilizarlo tanto en programas VBScript que se ejecuten en un servidor web (ASP) o en un programa Visual Basic.

Por ejemplo, para crear una instancia del parser en un ASP, hacemos los siguiente:

Set objParser = Server.CreateObject("Microsoft.XMLDOM")

Para utilizarlo en Visual Basic, tenemos que añadir el objeto COM Microsoft XML, version 2.0, en las referencias del proyecto, y luego crear una instancia del objeto:

Dim objParser As MSXML.DOMDocument
Set objParser = New MSXML.DOMDocument

Para cargar un documento XML, usamos el método .Load del objeto, especificando la ruta del documento, o bien mediante un URL que indique dónde se encuentra en la red.

If objParser.Load("c:tempxmldocumento.xml") Then
' Ha funcionado
Else
' Ha ocurrido un error
End If

'Ahora destruimos el objeto parser
Set objParser = nothing

El método .Load puede fallar porque el nombre o ubicación del documento sea erronea, o bien porque el documento es inválido (no comple las condiciones impuestas en su DTD o schema)

La validación del documento se puede suprimir si hacemos lo siguiente antes de cargar el documento:

objParser.validateOnParse = False

Una vez cargado, analizado y validado el documento, podemos empezar a utilizar la información que contiene. Para eso utilizamos la interface IXMLDOMNode del parser, que nos permite acceder a los diferentes nodos (elementos, atributos, texto, etc.) del documento.

Esta interface nos provee de ciertos métodos y propiedades para acceder con comodidad a los contenidos del documento, tanto para lectura como para escritura.

nodeType

Nos da información sobre el tipo de un nodo. Este parser soporta 13 tipos diferentes de nodo. (Están marcados en negrita los que más se usan)

Constantes de tipos de nodo
NODE_ATTRIBUTE
NODE_CDATA_SECTION
NODE_COMMENT
NODE_DOCUMENT
NODE_DOCUMENT_FRAGMENT
NODE_DOCUMENT_TYPE
NODE_ELEMENT
NODE_ENTITY
NODE_ENTITY_REFERENCE
NODE_INVALID
NODE_NOTATION
NODE_PROCESSING_INSTRUCTION
NODE_TEXT

nodeName

Si el tipo de no es adecuado, nodeName nos devuelve el nombre del nodo. Por ejemplo, un nodo tipo NODE_ELEMENT contendría en nodeName el nombre de un elemento de un documento XML

nodeValue

Nos devuelve el valor que contiene ese nodo, si es aplicable.

childNodes

Contiene una colección de nodos "hijos" del nodo que estamos considerando. Esta colección puede ser iterada por una construcció for each de Visual Basic.

hasChildNodes

Propiedad booleana que nos dice si un nodo tiene "hijos".

firstChild / lastChild

Contienen referencias al primer y último "hijo" del nodo.

parentNode

Nos devuelve una referencia al "padre" del nodo.

nextSibling / previousSibling

Nos devuelve una referencia al siguiente/anterior "hermano" del nodo, es decir, al siguiente/anterior nodo con el mismo "padre".

attributes

Nos devuelve una colección de los nodos tipo NODE_ATTRIBUTE del nodo.

Vamos a ver un ejemplo de un sencillo programa que selecciona todos los nodos tipo texto (NODE_TEXT) de un documento XML de una forma recursiva.

Public Sub CargaDoc()
Dim oParser As MSXML.DOMDocument
Set oParser = New MSXML.DOMDocument
If oParser.Load("test.xml") Them
MuestraNodos oParser.chilNodes
Else
MsgBox "Ha ocurrido un error."
End If
End Sub

Public Sub MuestraNodos (ByRef Nodos As MSXML.IXMLDOMNodeList)
Dim oNodo As MSXML.IXMLDOMNode
For Each oNodo In Nodos
If oNodo.nodeType = NODE_TEXT Then
Debug.Print oNodo.parentNode.nodeName & "=" & oNodo.nodeValue
End If
If oNodo.hasChildNodes Then
MuestraNodo oNodo.childNodes
End If
Next oNodo
End Sub

Si el fichero test.xml que usa este programa fuera el siguiente:

<?xml version="1.0"?>
<documento>
<titulo>Un documento cualquiera</titulo>
<fecha><dia>27</dia><mes>12</mes><año>2000</año></fecha>
</documento>

El resultado sería:

titulo=Un documento cualquiera
dia=27
mes=12
año=2000

Autor: ULPGC
http://www.ulpgc.es/otros/tutoriales/xml/DomVB.html



Usuarios que han visto este tema también han visto...

- XML en 10 Puntos
- Lenguaje de Enlace XML (XLink)
- Lanzando un popup en XML
- Cómo leer ficheros XML lo más rápidamente posible
- Atributos en XML


Versión imprimible - Versión imprimible de este documento
Enviar e-mail - Enviar por e-mail este documento
Publicidad

Información legal | Política de Privacidad | Contacte con nosotros

Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.


Página generada el 22-11-2008 a las 17:45:40