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

Para una versión de Microsoft Visual Basic .NET de este artículo, consulte 308063 .

Resumen

Este artículo paso a paso describe cómo llenar un control TreeView mediante datos de lenguaje de marcado Extensible (XML, Extensible Markup Language) en Microsoft Visual C# 2005 o en Microsoft Visual C#. NET. Dado que XML y en el control 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. A su vez, cada TreeNode tiene su propia colección de nodos que contiene a más de un niño TreeNode.

Nota: Este ejemplo utiliza el Document Object Model (DOM) análisis de clases de .NET para procesar XML.

Para obtener más información acerca del diseño de XML en.NET Framework, vea la sección "referencias".

Requisitos

La lista siguiente describe el hardware, software, infraestructura de red y service packs recomendados que necesita:
  • 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 Visual C# 2005 o Visual .NET C#
  • XML y los estándares relacionados
  • Formularios Windows Forms

Pasos para crear y rellenar el TreeView Control con XML

  1. Pegue el siguiente código XML en un nuevo archivo de texto denominado "Sample.xml". Este archivo es que los datos XML de ejemplo para este 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 en Visual C# 2005 o en Visual .NET C#. Se agregará Form1 a la aplicación de forma predeterminada.
  3. Arrastre los nuevos controles TreeView, Button, Labely TextBox a Form1.
  4. Agregue el siguiente código de ejemplo al final de la sección de directivas using de Form1.cs:
    using System.Xml;
  5. Pegue el siguiente código de ejemplo 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 código siguiente 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 acceso del archivo XML es correcto y, a continuación, 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 "referencias" para obtener información acerca de cómo utilizar la clase XmlDocument para cargar datos XML desde recursos diferentes.

Pasos para rellenar el TreeView Control 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 presentación u omitir datos no deseados.

En muchos casos, es aconsejable mostrar sólo parte de los datos XML. La parte de los datos que desea mostrar puede ser construido dinámicamente , el resultado de una transformación de lenguaje de hoja de estilo Extensible (XSL), 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 documento nuevo al control TreeView .

Por ejemplo, los siguientes pasos recuperar sólo los elementos secundarios de los datos XML originial utilizando la consulta XPath y, a continuación, agregar esta lista como un nuevo nodo a TreeView.
  1. Pegar el siguiente código justo antes de la línea de TreeView1.ExpandAll en el ejemplo anterior:
                // 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 ejecute la aplicación. Esta aplicación debe mostrar un nuevo nodo de raíz "hijos" en el TreeView , además de los datos originales.

REFERENCIAS

Para obtener más información, haga clic en el siguiente número de artículo para verlo en Microsoft Knowledge Base:

313651 roadmap for XML en el.NET Framework

Para obtener más información, visite los siguientes sitios Web de Microsoft Developer Network (MSDN):
Propiedades

Id. de artículo: 317597 - Última revisión: 17 ene. 2017 - Revisión: 1

Comentarios