Cómo llenar un Control TreeView con datos XML en Visual Basic .NET

Seleccione idioma Seleccione idioma
Id. de artículo: 308063 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo paso a paso describe cómo llenar un control TreeView mediante datos de lenguaje de marcado extensible (XML) en Visual Basic. NET. Dado que tanto XML como el control de TreeView representan los datos en un formato jerárquico, el control TreeView es una elección natural para mostrar datos XML.

El control TreeView tiene una colección de nodos con objetos TreeNode de raíz. Cada TreeNode a su vez tiene su propia colección de nodos que contiene a más de un elemento secundario TreeNode .

Nota : este ejemplo utiliza el documento objeto modelo DOM Document Object (Model) analizar las clases de .NET proceso XML.

Para obtener más información sobre el diseño de XML en .NET Framework, vea la sección "Referencias" de este artículo.


Requisitos

En la lista siguiente se describe el hardware, el software, la infraestructura de red y los service pack recomendados que se necesitarán:
  • Microsoft Windows XP, Microsoft Windows 2000 o Microsoft Windows NT 4.0 Service Pack 6a
  • Microsoft Data Access Components 2.6 (MDAC) o posterior
  • Microsoft Visual Studio .NET
En este artículo se supone que está familiarizado con los temas siguientes:
  • Sintaxis de Visual Basic .NET
  • XML y estándares relacionados
  • Formularios Windows Forms

Pasos para crear y rellenar el Control TreeView con XML

  1. Pegue el siguiente código de ejemplo XML en un nuevo archivo de texto denominado "Sample.xml". Este archivo es de los datos para este ejemplo XML de ejemplo:
    <?xml version="1.0"?>
    <family>
    <parent>id="grandfather"
        <parent>id="father"
             <parent>id="brother"
                <child>id="niece"
                </child>
             </parent>
             <parent>id="me"
                <child>id="son"</child>
                <child>id="daughter"</child>
             </parent>
             <child>id="sister"</child>
         </parent>
         <parent>id="uncle"
             <parent>id="cousin sister"
                <child>id="second cousin"</child>
             </parent>
             <child>id="cousin brother"</child>
         </parent>
    </parent>
    </family>
    					
  2. Cree una nueva aplicación basada en Windows con Visual Basic .NET. Form1 se agrega a la aplicación de manera predeterminada.
  3. Arrastre los nuevos controles de TreeView , Button , Label y TextBox a Form1.
  4. Agregue el siguiente ejemplo de código como la primera línea en el código de ventana en Form1.vb:
    Imports System.Xml
    					
  5. En el archivo de Form1.vb, reemplace todo el código después de la sección "Código generado por el Diseñador de Windows Forms" con el siguiente código de ejemplo:
       Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
          ' Initialize the controls and the form.
          Label1.Text = "File Path"
          Label1.SetBounds(8, 8, 50, 20)
          TextBox1.Text = Application.StartupPath() & "\Sample.xml"
          TextBox1.SetBounds(64, 8, 256, 20)
          Button1.Text = "Populate the TreeView with XML"
          Button1.SetBounds(8, 40, 200, 20)
          Me.Text = "TreeView control from XML"
          Me.Width = 336
          Me.Height = 368
          TreeView1.SetBounds(8, 72, 312, 264)
       End Sub
    
       Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
          Try
             ' SECTION 1. Create a DOM Document and load the XML data into it.
             Dim dom As New XmlDocument()
             dom.Load(TextBox1.Text)
    
             ' SECTION 2. Initialize the treeview control.
             TreeView1.Nodes.Clear()
             TreeView1.Nodes.Add(New TreeNode(dom.DocumentElement.Name))
             Dim tNode As New TreeNode()
             tNode = TreeView1.Nodes(0)
    
             ' SECTION 3. Populate the TreeView with the DOM nodes.
             AddNode(dom.DocumentElement, tNode)
             TreeView1.ExpandAll()
    
          Catch xmlEx As XmlException
             MessageBox.Show(xmlEx.Message)
          Catch ex As Exception
             MessageBox.Show(ex.Message)
          End Try
    
       End Sub
    
       Private Sub AddNode(ByRef inXmlNode As XmlNode, ByRef inTreeNode As TreeNode)
          Dim xNode As XmlNode
          Dim tNode As TreeNode
          Dim nodeList As XmlNodeList
          Dim i As Long
    
          ' Loop through the XML nodes until the leaf is reached.
          ' Add the nodes to the TreeView during the looping process.
          If inXmlNode.HasChildNodes() Then
             nodeList = inXmlNode.ChildNodes
             For i = 0 To nodeList.Count - 1
                xNode = inXmlNode.ChildNodes(i)
                inTreeNode.Nodes.Add(New TreeNode(xNode.Name))
                tNode = inTreeNode.Nodes(i)
                AddNode(xNode, tNode)
             Next
          Else
             ' Here you need to pull the data from the XmlNode based on the
             ' type of node, whether attribute values are required, and so forth.
             inTreeNode.Text = (inXmlNode.OuterXml).Trim
          End If
       End Sub
    					
  6. Presione F5 para generar y ejecutar la aplicación. Asegúrese de que la ruta de archivo XML es correcta y haga clic en el botón . Los datos XML deben aparecer en el control TreeView .
Nota : el recurso puede ser un archivo, una dirección URL o una secuencia XML. Consulte la sección "Referencias" de este artículo para información sobre cómo utilizar la clase XmlDocument para cargar datos XML desde recursos diferentes.


Pasos para rellenar el Control TreeView con los datos requeridos

El ejemplo de código anterior asigna los datos del árbol XML directamente en el TreeView y muestra todos los datos. Como alternativa, puede agregar información adicional a la pantalla o omitir datos no deseados.

En muchos casos, quizás desee mostrar sólo parte de los datos XML. La parte de los datos que desea mostrar puede ser dinámicamente construido, el resultado de una transformación XSL (Extensible Stylesheet Language) o el resultado de una consulta XPath. Esta sección describe cómo crear un nuevo documento XML con sólo los nodos necesarios y, a continuación, agregar el nuevo documento al control TreeView .

Por ejemplo, los pasos siguientes recuperar sólo los elementos secundarios de los datos XML originial mediante consulta de XPath y, a continuación, agregar esta lista como un nuevo nodo a TreeView .
  1. Pegue el siguiente código justo antes de la línea TreeView1.ExpandAll en el ejemplo anterior:
             ' SECTION 4. Create a new TreeView Node with only the child nodes.
             Dim nodelist As XmlNodeList = dom.SelectNodes("//child")
             Dim cDom As New XmlDocument()
             cDom.LoadXml("<children></children>")
             Dim node As XmlNode
             For Each node In nodelist
                Dim newElem As XmlNode = cDom.CreateNode(XmlNodeType.Element, node.Name, node.LocalName)
                newElem.InnerText = node.InnerText
                cDom.DocumentElement.AppendChild(newElem)
             Next
    
             TreeView1.Nodes.Add(New TreeNode(cDom.DocumentElement.Name))
             tNode = TreeView1.Nodes(1)
             AddNode(cDom.DocumentElement, tNode)
    					
  2. Genere y a continuación, ejecute la aplicación. Esta aplicación debe mostrar un nuevo nodo de raíz "niños" en el TreeView , además a los datos originales.

REFERENCIAS

Para obtener información adicional, consulte el siguiente artículo de Knowledge Base y la documentación del Kit de desarrollo de software (SDK) de Microsoft .NET:
313651Roadmap for XML en .NET Framework
Espacio de nombres System.Xml
http://msdn.microsoft.com/en-us/library/system.xml(vs.71).aspx
Desarrollo de Microsoft .NET
http://msdn.microsoft.com/xml

Propiedades

Id. de artículo: 308063 - Última revisión: jueves, 15 de julio de 2004 - Versión: 4.4
La información de este artículo se refiere a:
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.1
Palabras clave: 
kbmt kbtreeview kbbcl kbctrl kbhowtomaster kbwindowsforms KB308063 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 308063

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com