10
votes

C # - Sélectionnez des descendants XML avec LINQ

J'ai la structure XML suivante: xxx

Je veux itération sur le nom nom nœuds avec linq. J'ai essayé ceci: xxx

mais cela n'a pas fonctionné comme je l'ai besoin. Toute suggestion?


0 commentaires

3 Réponses :


11
votes

Tout d'abord, assurez-vous que votre XML a un seul nœud racine: xxx pré>

Après cela, vous pouvez utiliser le code suivant pour charger le XML: P>

string xml = //Get your XML here    
XElement xElement = XElement.Parse(xml);
//This now holds the set of all elements named field
var items = 
       xElement
      .Descendants("field")
      .Where(n => (string)n.Attribute("name") == "Name");


1 commentaires

Ray, tu es mon préféré. Big Ups.



17
votes
var items = doc.Descendants("field")
               .Where(node => (string)node.Attribute("name") == "Name")
               .Select(node => node.Value.ToString())
               .ToList();

1 commentaires

Que fait Doc.Descendants à Linq?



1
votes

Je pense que Linq à SQL est l'approche la plus directe:

var items = (from c in doc.Descendants("field")
            where c.Attribute("name").Value == "Name"
            select c.Value
            ).ToList();


1 commentaires

Ceci est "Syntaxe de compréhension de requête", pas Linq-to-SQL :)