Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Visual Basic y Xml ????

Estas en el tema de Visual Basic y Xml ???? en el foro de Visual Basic clásico en Foros del Web. Tengo unos archivos en xml que son gigantescos y me interesan solo ciertos campos. Hay alguna manera de tratar los archivos xml como si fueran ...
  #1 (permalink)  
Antiguo 09/01/2006, 13:04
Avatar de aavg  
Fecha de Ingreso: abril-2002
Ubicación: Morelia México
Mensajes: 356
Antigüedad: 22 años
Puntos: 1
Visual Basic y Xml ????

Tengo unos archivos en xml que son gigantescos y me interesan solo ciertos campos.

Hay alguna manera de tratar los archivos xml como si fueran una base de datos y no hacer un recorrido secuencial por el archivo, o algo asi y dirigirme directamente a los campos que me interesan?

Gracias por sus respuestas
__________________
Abraham Velasco
Usuario # 516 en los Foros del Web.
El hombre no vale por lo que sabe, sino por lo que transmite
C'est parce qu'il y a un Dieu que nous sommes libres
  #2 (permalink)  
Antiguo 09/01/2006, 16:39
Avatar de Beakdan  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 4 meses
Puntos: 7
Sólo tienes que poner una referencia a "Microsoft XML" en tu programa. Creas una instancia de un objeto DOMDocument, Y cargas el documento. Para tener acceso a las etiquetas que te interesan utilizas los métodos definidos en el éstandar DOM. Por ejemplo:
Código:
Option Explicit
Dim DOMDoc As MSXML2.DOMDocument

Private Sub Form_Load()
Dim nodo As MSXML2.IXMLDOMNode
Dim nodos As MSXML2.IXMLDOMNodeList

    Set DOMDoc = New MSXML2.DOMDocument
    DOMDoc.Load app.Path & "\XMLDoc.xml"

    'Estructura del XML
    '<familia>
    '   <nombre id="ROOT">Productos</n>
    '    <familia>
    '        <nombre id="DI">Diodos</nombre>
    '        <producto id="DI-RE">Rectificadores</productos>
    '        <producto id="DI-ZE">Zener</productos>
    '    </familia>
     '       .....
    '</familia>

    'Para obtener el contenido de un nodo
    'siguiendo la estructura del documento
    Set nodo = DOMDoc.firstChild.firstChild
    Debug.Print nodo.Attributes.getNamedItem("id").nodeValue
    'Imprime "ROOT"
    Debug.Print nodo.firstChild.nodeValue
    'Imprime "Productos"

    'Obtener una lista de nodos por el nombre de etiqueta
    Set nodos = DOMDoc.getElementsByTagName("familia")
    For Each nodo In nodos
        'Imprime el nombre de cada familia en la lista
        Debug.Print nodo.firstChild.firstChild.nodeValue
    Next nodo
End Sub
En cuanto al desempeño con archivos grandes, sólo he usado código como este con archivos de no mas de 1MB, y funciona bien. La ventaja es que puede acceder de un modo intuitivo a todas las etiquetas de tu documento.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:25.