Kader Yildirim
LINQ à 360 degré, Partie 2
Cet article présente les principales fonctionnalités apportées par LINQ to XML
Par Kader Yildirim publié le 14/06/2007 à 19:28, lu 3926 fois, 6 pages
 4 | Construction dynamique du document XML
Dès que LINQ rencontre un élément implémentant IEnumerable ou bien IQueryable dans le constructeur d'un noeud de type XElement (ou XDocument) alors le moteur parcours les enregistrements retournés par la requête et ajoute les noeuds correspondants au document XML. Ainsi avec ce type de construction le code est encore plus compact et lisible :

static void DoJobNewWay2()

        {

            var data = new [] {

                   new { Id="123456", Acheteur="Pierre", Produit="Robot de cuisine", Prix="451" },

                   new { Id="7890123", Acheteur="Paul", Produit="Voiture de course", Prix="43657" },

                   new { Id="avcf568", Acheteur="Dupont", Produit="Casserole", Prix="356" }

               };

 

            XElement xml = new XElement("commandes",

                   from d in data

                        select new XElement("commande",

                            new XAttribute("id", d.Id),

                            new XElement("acheteur", d.Acheteur),

                            new XElement("produit", d.Produit),

                            new XElement("prix", d.Prix)

                        )

                );

 

            var result = from x in xml.Descendants("commande")

                        where (int)x.Element("prix") < 500

                        select x.Element("acheteur").Value + " : " +

                                x.Element("produit").Value + " : " +

                                x.Attribute("id").Value;

 

            foreach (string s in result)

                Console.WriteLine(s);

        }

Bien entendu comme la construction de documents XML par code reste relativement rare, LINQ to XML supporte aussi le chargement et la sauvegarde de documents XML depuis, par exemple, des fichiers (méthodes Load, Save...).
 
» Démarrer une discussion
 
Discussion démarée par fico.stephane le 14/06/2007 à 22:26, 2 commentaire(s).