Linq to xml & la manipulation de données en xml avec une application winform

Contenu du snippet

Afin de manipuler des données à l'aide d'XML et de supprimer et ajouter dans votre fichier XML à votre guise rien de tel que d'utiliser Linq to XML avec le framework .NET 3.5
C'est tout simplement génial...adieux le vieux code écrit pour manipuler du XML, ouuf.

<!-- Voici la structure du fichier XML, j'ai mis que 2 noeuds mais peu importe ... -->
<?xml version="1.0" encoding="utf-8" ?>
<racine_perso>

<noeud_perso noeud_persoId="1">
<nom_noeud_perso>INT</nom_noeud_perso>
</noeud_perso>

<noeud_perso noeud_persoId="2">
<nom_noeud_perso>ANU</nom_noeud_perso>
</noeud_perso>

</racine_perso>

Source / Exemple :


//code .cs, il faut bien sûr ajouter "using System.Xml" et using "System.Xml.Linq"

XmlDocument docXML = new XmlDocument();
            docXML.Load(Application.StartupPath + @"\nomFichier.xml");
            //On récupere le flux XML depuis le fichier XML
            XElement docXMLFromLinq = XElement.Load(Application.StartupPath + @"\nomFichier.xml");
            XmlNodeList nodes = docXML.SelectNodes("/racine/noeud_perso");                                   
            //Utilisation de Linq to XML
            //le fichier XML
            
            int iMaxNodeId = 0;
            //docXMLFromLinq.Element("") 
            foreach (var id in docXMLFromLinq.Elements("noeud_perso")) 
            {
                int iIdNode = System.Convert.ToInt32((string)id.Attribute("noeud_persoId"));
                iMaxNodeId = Math.Max(iMaxNodeId, iIdNode); 
            }         

            //Le nouveau noeud
            XElement oNewNode =                
                    new XElement("noeud_perso",
                        new XAttribute("noeud_persoId", iMaxNodeId+1),
                        new XElement("nom_noeud_perso", "Mon_nom_toto");
            //sauvegarde du fichier XML
            docXMLFromLinq.Add(oNewNode);            
            docXMLFromLinq.Save(Application.StartupPath + @"\nomFichier.xml");
            //attention Nom_de_projet : remplacer par le nom de votre projet
            String sDestinationSauvegarde = Nom_de_votre_projet.Properties.Settings.Default.ModeleTypesDeFichier;
            
//Rien de plus facile que de supprimer un noeud :

XmlDocument docXML = new XmlDocument();
docXML.Load(Application.StartupPath + @"\nomFichier.xml");
XmlNodeList nodes = docXML.SelectNodes("/racine_perso/nom_noeud_perso");
      foreach (XmlNode node in nodes)
        {
         foreach (XmlNode oNodeEnfant in node.ChildNodes)
              {
               if (oNodeEnfant.Name == "nomtypelong" && 
                NodeEnfant.FirstChild.InnerText == oItem.ToString())
                  {                                                        
                   oNodeEnfant.ParentNode.ParentNode.RemoveChild(node);
                   docXML.Save(Application.StartupPath                + "\nomFichier.xml");                                                    
                   }
               }
          }

Conclusion :


Voila, aller zouuuuuu je reviens à mon visual studio

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.