Cómo llenar un control TreeView con datos XML en Visual C# 2005 o en Visual C# .NET

Seleccione idioma Seleccione idioma
Id. de artículo: 317597 - Ver los productos a los que se aplica este artículo
Para obtener una versión de Microsoft Visual Basic .NET de este artículo, consulte 308063.
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 lenguaje de marcado extensible (XML) en Microsoft Visual C# 2005 o en Microsoft Visual C#. 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 En este ejemplo se utiliza el Document Object Model (DOM) 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 "References".

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 2005 o Microsoft Visual Studio .NET
En este artículo se supone que está familiarizado con los temas siguientes:
  • Sintaxis de Visual C# 2005 o sintaxis de Visual C# .NET
  • XML y estándares relacionados
  • Formularios Windows Forms

Pasos para crear y llenar 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. Crear una aplicación nueva basada en Windows en Visual C# 2005 o en Visual C#. 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 código de ejemplo al final de la sección de directivas using en Form1.cs:
    using System.Xml;
    					
  5. Pegue el siguiente ejemplo de código en el evento Form1_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);
             this.Text = "TreeView control from XML";
             this.Width = 336;
             this.Height = 368;
             treeView1.SetBounds(8, 72, 312, 264);
    					
  6. Pegue el código siguiente en el evento Button1_Click :
             try 
             {
                // SECTION 1. Create a DOM Document and load the XML data into it.
                XmlDocument dom = new XmlDocument();
                dom.Load(textBox1.Text);
    
                // SECTION 2. Initialize the TreeView control.
                treeView1.Nodes.Clear();
                treeView1.Nodes.Add(new TreeNode(dom.DocumentElement.Name));
                TreeNode tNode = new TreeNode();
                tNode = treeView1.Nodes[0];
    
                // SECTION 3. Populate the TreeView with the DOM nodes.
                AddNode(dom.DocumentElement, tNode);
                treeView1.ExpandAll();
             }
             catch(XmlException xmlEx)
             {
                MessageBox.Show(xmlEx.Message);
             }
             catch(Exception ex)
             {
                MessageBox.Show(ex.Message);
             }
    					
  7. Pegue el siguiente ejemplo de código después del evento Button1_Click :
          private void AddNode(XmlNode inXmlNode, TreeNode inTreeNode)
          {
             XmlNode xNode;
             TreeNode tNode;
             XmlNodeList nodeList;
             int i;
    
             // Loop through the XML nodes until the leaf is reached.
             // Add the nodes to the TreeView during the looping process.
             if (inXmlNode.HasChildNodes)
             {
                nodeList = inXmlNode.ChildNodes;
                for(i = 0; i<=nodeList.Count - 1; i++)
                {
                   xNode = inXmlNode.ChildNodes[i];
                   inTreeNode.Nodes.Add(new TreeNode(xNode.Name));
                   tNode = inTreeNode.Nodes[i];
                   AddNode(xNode, tNode);
                }
             }
             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();
             }
          }                  
       }
    }
    					
  8. 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 podría ser un archivo, una dirección URL o una secuencia XML. Consulte la sección "References" 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 necesarios

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. Pegar código justo antes de la línea TreeView1.ExpandAll en el ejemplo anterior siguiente:
                // SECTION 4. Create a new TreeView Node with only the child nodes.
                XmlNodeList nodelist = dom.SelectNodes("//child");
                XmlDocument cDom = new XmlDocument();
                cDom.LoadXml("<children></children>");
                foreach(XmlNode node in nodelist)
                {
                   XmlNode newElem = cDom.CreateNode(XmlNodeType.Element, node.Name, node.LocalName);
                   newElem.InnerText = node.InnerText;
                   cDom.DocumentElement.AppendChild(newElem);
                }
             
                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 más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
313651Roadmap for XML en .NET Framework
Para obtener más información, visite los siguientes sitios Web de Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/system.xml(vs.71).aspx

http://msdn2.microsoft.com/en-us/xml/default.aspx

Propiedades

Id. de artículo: 317597 - Última revisión: jueves, 17 de mayo de 2007 - Versión: 4.6
La información de este artículo se refiere a:
  • Microsoft Visual C# 2005 Express Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
Palabras clave: 
kbmt kbbcl kbctrl kbhowtomaster kbwindowsforms KB317597 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): 317597

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