2009-11-11 5 views

Répondre

7

Essayez ceci:

string text = "<foo>...</foo>"; 
var pairs = XDocument.Parse(text) 
        .Descendants("add") 
        .Select(x => new { Key = x.Attribute("key").Value, 
             Value = x.Attribute("Value").Value }) 
        .ToList(); 
+0

Salut, cela ne sera pas compilé. Je reçois: 'System.Collections.Generic.IEnumerable ' ne contient pas de définition pour 'Select' et aucune méthode d'extension 'Select' acceptant un premier argument de type – raklos

+0

grr ... ça ne fait rien! using System.Linq; do'h – raklos

+2

À la place du ToList(); Je serais tenté d'utiliser un: .ToDictionary (item => item.Key, item => item.Value); Juste comme me semble plus évident pour le problème d'OP. – Mike

2
XDocument fooXML = new XDocument.Load("foo.xml") 
var query = from a in fooXML.Element("foo").Elements("add") 
      select new 
      { 
       key = a.Attribute("key").Value, 
       val = a.Attribute("Value").Value 
      }; 
// Then do what you want with the query... 
+0

Je pense que vous voulez dire l'attribut plutôt que les attributs, et Elements ne prend qu'un seul nom d'élément, pas un chemin (AFAIK, de toute façon). –

Questions connexes