Comment faire pour remplir un contrôle TreeView avec des données XML dans Visual C# 2005 ou dans Visual C# .NET

Traductions disponibles Traductions disponibles
Numéro d'article: 317597 - Voir les produits auxquels s'applique cet article
Pour une version de Microsoft Visual Basic .NET de cet article, voir 308063.
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article étape par étape explique comment remplir un contrôle TreeView en utilisant des données XML (Extensible Markup Language) dans Visual C# 2005 ou dans Visual C# .NET. Car les données XML et le contrôle TreeView représentent les données dans un format hiérarchique, le contrôle TreeView est un choix naturel pour afficher les données XML.

Le contrôle TreeView possède une collection des éléments avec des objets TreeNode racine. Chaque TreeNode possède à son tour sa propre collection des éléments qui contient plusieurs enfants TreeNode .

note Cet exemple utilise le DOM Document Object Model () analyse des classes de .NET au processus XML.

Pour plus d'informations sur la conception du langage XML dans .NET Framework, reportez-vous à la section « References ».

Configuration requise

La liste suivante met en évidence le matériel recommandé, logiciel infrastructure réseau et service packs dont vous avez besoin :
  • Microsoft Windows XP, Microsoft Windows 2000 ou Microsoft Windows NT 4.0 Service Pack 6 a
  • Microsoft Data Access Components 2.6 (MDAC) ou version ultérieure
  • Microsoft Visual Studio 2005 ou Microsoft Visual Studio .NET
Cet article suppose que vous êtes familiarisé avec les sujets suivants :
  • Visual C# 2005 syntaxe ou la syntaxe Visual C# .NET
  • XML et les normes connexes
  • Windows Forms

Étapes pour créer et remplir le contrôle TreeView avec XML

  1. Collez le code d'exemple XML suivant dans un nouveau fichier texte nommé « Sample.xml ». Ce fichier est l'exemple de données XML pour cet exemple montre comment :
    <?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. Créer une nouvelle application Windows dans Visual C# 2005 ou dans Visual C# .NET. Form1 est ajouté à l'application par défaut.
  3. Faites glisser les nouveaux contrôles TreeView , bouton , étiquette et zone de texte sur Form1.
  4. Ajoutez le code exemple suivant à la fin de la section instructions à l'aide dans Form1.cs :
    using System.Xml;
    					
  5. Collez le code exemple suivant dans l'événement 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);
    					
    Label1.Text = le chemin du fichier label1.SetBounds (8, 8, 50, 20); textBox1.Text = Application.StartupPath + "\\Sample.xml" textBox1.SetBounds (64 8 256, 20); button1.Text = « remplir le TreeView avec XML » button1.SetBounds (8 40, 200, 20); this.Text = « contrôle TreeView à partir de XML »; this.Width = 336 ; this.Height = 368 ; treeView1.SetBounds (8, 72, 312, 264) ;
  6. Collez le code suivant dans l'événement Button1_Click : essayez
             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);
             }
    					
    AddNode (dom.DocumentElement, tNode); treeView1.ExpandAll();} catch (xmlEx XmlException) {MessageBox.Show(xmlEx.Message);} catch (exception ex) {MessageBox.Show(ex.Message);}
  7. Collez le code exemple suivant après l'événement Button1_Click : private
          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. Appuyez sur F5 pour générer et exécuter l'application. Assurez-vous que le chemin d'accès au fichier XML est correcte, puis cliquez sur le bouton . Les données XML doivent apparaître dans le contrôle TreeView .
note La ressource peut être un fichier, une URL ou un flux XML. Consultez la section " References " pour informations sur l'utilisation la classe XmlDocument pour charger des données XML à partir de différentes ressources.

Étapes pour remplir le contrôle TreeView avec les données requises

L'exemple de code précédent mappe les données d'arborescence XML directement dans l' objet TreeView et affiche toutes les données. Sinon, vous pouvez ajouter des informations supplémentaires à l'affichage ou ignorer les données inutiles.

Dans de nombreux cas, vous souhaiterez afficher uniquement une partie des données XML. La partie des données que vous souhaitez afficher peut être dynamique construit, le résultat d'une transformation XSL (Extensible Stylesheet Language), ou le résultat d'une requête XPath. Cette section explique comment créer un document XML avec uniquement les n?uds requis, puis ajouter le nouveau document au contrôle TreeView .

Par exemple, les étapes suivantes récupérer uniquement les éléments enfants de données XML originial à l'aide requête XPath et puis ajoutez cette liste en tant que nouveau noeud à l' objet TreeView .
  1. Coller suivant code juste avant la ligne TreeView1.ExpandAll dans l'exemple précédent :
                // 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. Créer, puis exécutez l'application. Cette application doit afficher un nouveau noeud racine « enfants » dans l' objet TreeView avec les données d'origine.

RÉFÉRENCES

Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
313651 Introduction de XML dans le .NET Framework
Pour plus d'informations, reportez-vous aux Web MSDN (Microsoft Developer Network) sites adresses suivantes :
http://msdn2.microsoft.com/en-us/library/system.xml(vs.71).aspx

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

Propriétés

Numéro d'article: 317597 - Dernière mise à jour: jeudi 17 mai 2007 - Version: 4.6
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual C# 2005 Express Edition
  • Microsoft Visual C# .NET 2003 Initiation
  • Microsoft Visual C# .NET 2002 Initiation
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
Mots-clés : 
kbmt kbbcl kbctrl kbhowtomaster kbwindowsforms KB317597 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 317597
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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