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
 2 | L'exemple de départ
L'exemple suivant écrit en C# 2.0 crée un document XML puis recherche tous les éléments qui ont un prix inférieur à 500 euros :

static void DoJobOldWay()

        {

            XmlDocument xmldoc = new XmlDocument();

            XmlNode rootNode = xmldoc.AppendChild(xmldoc.CreateElement("commandes"));

 

            XmlElement elt = xmldoc.CreateElement("commande");

            XmlNode cmdNode = rootNode.AppendChild(elt);

            elt.SetAttribute("id", "123456");

            elt = xmldoc.CreateElement("acheteur");

            elt.InnerText = "Pierre";

            cmdNode.AppendChild(elt);

            elt = xmldoc.CreateElement("produit");

            elt.InnerText = "Robot de cuisine";

            cmdNode.AppendChild(elt);

            elt = xmldoc.CreateElement("prix");

            elt.InnerText = "451";

            cmdNode.AppendChild(elt);

 

            elt = xmldoc.CreateElement("commande");

            cmdNode = rootNode.AppendChild(elt);

            elt.SetAttribute("id", "7890123");

            elt = xmldoc.CreateElement("acheteur");

            elt.InnerText = "Paul";

            cmdNode.AppendChild(elt);

            elt = xmldoc.CreateElement("produit");

            elt.InnerText = "Voiture de course";

            cmdNode.AppendChild(elt);

            elt = xmldoc.CreateElement("prix");

            elt.InnerText = "43657";

            cmdNode.AppendChild(elt);

 

            elt = xmldoc.CreateElement("commande");

            cmdNode = rootNode.AppendChild(elt);

            elt.SetAttribute("id", "avcf568");

            elt = xmldoc.CreateElement("acheteur");

            elt.InnerText = "Dupont";

            cmdNode.AppendChild(elt);

            elt = xmldoc.CreateElement("produit");

            elt.InnerText = "Casserole";

            cmdNode.AppendChild(elt);

            elt = xmldoc.CreateElement("prix");

            elt.InnerText = "356";

            cmdNode.AppendChild(elt);

 

            XmlNodeList xnl = xmldoc.SelectNodes("//commande[prix<500]");

            foreach(XmlNode xn in xnl)

                Console.WriteLine(xn.SelectSingleNode("acheteur").InnerText + " : " +

                    xn.SelectSingleNode("produit").InnerText + " : " +

                    xn.SelectSingleNode("@id").InnerText);

        }

Ce code est verbeux et peu intuitif pour les développeurs qui ne sont pas familiers avec les API XML et ceci bien que les données à manipuler soient simples.
En effet avec XML DOM tous les noeuds sont crées et vivent dans le contexte d'un document (on a une vision top down).
 
» Démarrer une discussion
 
Discussion démarée par fico.stephane le 14/06/2007 à 22:26, 2 commentaire(s).