begin process at 2010 02 09 19:55:40
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

.NET

 > LINQ TO XML & LA MANIPULATION DE DONNÉES EN XML AVEC UNE APPLICATION WINFORM

LINQ TO XML & LA MANIPULATION DE DONNÉES EN XML AVEC UNE APPLICATION WINFORM


 Information sur la source

Note :
Aucune note
Catégorie :.NET Source .NET ( DotNet ) Classé sous :xml, linq, dotnet, visual studio Niveau :Initié Date de création :13/02/2009 Date de mise à jour :25/02/2009 11:19:50 Vu :4 039

Auteur : driver

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note


 Description

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_noe ud_perso>
</noeud_perso>

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

</racine_perso>

Source

  • //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");
  • }
  • }
  • }
//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


 Historique

13 février 2009 12:00:08 :
séparation du code xml et du code cs
13 février 2009 12:11:25 :
oublie de code
25 février 2009 11:19:50 :
niveau

 Sources du même auteur

Source .NET (Dotnet) WEBSERVICES + AJAX = UNE BONNE MÉTHODE POUR BANIR L'AUTOPOST...

 Sources de la même categorie

Source avec Zip CHAT SERVER-CLIENT par abderrahmenbilog
Source avec Zip Source avec une capture Source .NET (Dotnet) SIMULATION DE CONSOLE POUR WINDOWS MOBILE par originalcompo
Source avec Zip Source .NET (Dotnet) BASE DE DONNÉES EN XML par DanMor498
Source avec Zip Source avec une capture Source .NET (Dotnet) SIMPLECONV - APPLICATION DE CONVERSION MONÉTAIRE AVEC TAUX E... par Jeffrey_
Source avec Zip Source .NET (Dotnet) TRAITEUR D'IMAGE (MINI) par ycyril

 Sources en rapport avec celle ci

Source .NET (Dotnet) WEBTESTPLUGIN - IGNORER DES URLS LORS D'UN TEST WEB VISUAL S... par jesusonline
Source avec Zip Source avec une capture Source .NET (Dotnet) [.NET3.5] SYSTEM.IO.PIPES - UTILISATION D'UN CANAL NOMMÉ par Willi
Source avec Zip Source avec une capture Source .NET (Dotnet) HOOK CLAVIER EN C# par shadow1779
Source avec Zip Source avec une capture Source .NET (Dotnet) LANCER UNE FEUILLE FILLE MDI UNE ET UNE SEULE FOIS par anadeveloppeur
Source avec Zip Source .NET (Dotnet) ARBRE (TREE) - STRUCTURES D'ARBRES GÉNÉRIQUES par ricklekebekoi

Commentaires et avis

Commentaire de lolo_thomas le 16/02/2009 09:36:52

Heu... y'a un truc que je ne comprends pas. Pourquoi fais-tu un docXML.Save() à l'intérieur d'une double boucle ?

Pourquoi ne fais-tu pas la sauvegarde une seule fois et après la fin des boucles ?

Commentaire de driver le 16/02/2009 10:27:17

t'as raison, mais ça reviens au même, puisque cette sauvegarde n'est executé qu'une seule fois, en + je viens de remarquer que j'a ioublier de standardiser le test sur le nom du noeud enfant mais je suppose que tout le monde l'a compris ça, comme j'ai marqué niveau expert les gens vont corriger d'eux même :)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Problème Linq to xml et lecture de tag fermante [ par PatrickDes ] Bonjour.J'ai un problème à lire le flux xml (mathml) suivant avec Linq to xml (c#3.0) et j'aimerai bien utiliser cette méthode (apprentissage récent d Différence entre XSL DOM ET LINQ [ par mimosa803 ] Bonjour,J'ai une question concernant l'utilisation des fichiers XML :Avant la sortie de LINQ TO XML on utilisait DOM pour parser le document XML (XMLD Linq to XML [ par DCWeb ] Bonjour,J'aimerai savoir si ça pose un problème de charger un fichier XML de plusieurs dizaines de Go afin de le traiter avec LinqCordialementDCWeb [XML LINQ]Modifier un XML pour ajouter une liste [ par jeffwow ] Bonjour! Je vais essayer d'être le plus clair possible... J'ai un fichier XML que je dois modifier. Je dois y ajouter une liste si l'usager a chois mdb to xml en utilisant using System.Linq [ par dorras7 ] salut,je developpe en c# et je veux savoir comment convertir un fichier MDB en fichier XML en utilisant using System.Linq.Merci. Linq to XML [ par shadow1779 ] Bonjour,on trouve de nombreux exemple de Linq to XML sur le net avec la création d'un xml après une requète effectuée avec Linq, néanmoins je recherch Parcourir un fichier xml avec linq [ par dorras7 ] bjr,je veux savoir comment parcourir tous les elements du fichier XML avec linqMerci Select avec Linq [ par shadow1779 ] Bonjour,j'essaye de démarrer avec Linq to SQL, par contre j'ai quelques petits soucis pour comprendre le concept. J'ai fais un fichier classe linq to Linq to XSD [ par SharpMao ] Hello,En début d'année, j'ai vu un ou deux articles parlant de Linq to XSD. Il y a même une version alpha à télécharger< Recup d'info dans un fixhier XML [ par johnnous ] bonjour j'arrive à creer un fichier XML&lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-insta


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,092 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales