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 3925 fois, 6 pages
 3 | Utilisation de LINQ
Si nous utilisons les nouveautés proposées par LINQ le code se transforme ainsi :

static void DoJobNewWay()

        {

            XElement xml = new XElement("commandes",

                    new XElement("commande",

                        new XAttribute("id", "123456"),

                        new XElement("acheteur", "Pierre"),

                        new XElement("produit", "Robot de cuisine"),

                        new XElement("prix", "451")

                    ),

                    new XElement("commande",

                        new XAttribute("id", "7890123"),

                        new XElement("acheteur", "Paul"),

                        new XElement("produit", "Voiture de course"),

                        new XElement("prix", "43657")

                    ),

                    new XElement("commande",

                        new XAttribute("id", "avcf568"),

                        new XElement("acheteur", "Dupont"),

                        new XElement("produit", "Casserole"),

                        new XElement("prix", "356")

                    )

                );

 

            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);

        }

Les principales classes de gestion du XML sont XDocument, XElement et XAttribute. Alors que LINQ est hébergé dans l'assembly System.Core.dll, les extensions XML se trouvent dans System.Xml.Linq.dll.

Comme on peut le voir dans le code ci-dessus, grâce au support de la construction d'éléments imbriqués de profondeur variable dans les constructeurs des classes XDocument et XElement on peut construire un document XML de façon plus concise et intuitive que ce que nous proposent les API de .Net 2.0. Ce type de constructeur s'appelle constructeur fonctionnel.

La classe XDocument n'est utile que si on travaille avec un document XML contenant le processing instruction, des commentaires... Dans notre cas, comme nous ne manipulons que le corps du document XML, la classe XElement est suffisante.

Ainsi LINQ permet de travailler sur des documents XML tout en rendant accessible des notions potentiellement complexes telles que XPath, XQuery, XSLT...
 
» Démarrer une discussion
 
Discussion démarée par fico.stephane le 14/06/2007 à 22:26, 2 commentaire(s).