2008-11-18 10 views
5

J'essaie de sélectionner le champ "nom" du noeud auteur dans un flux ATOM à l'aide de LINQ. Je peux obtenir tous les domaines dont j'ai besoin comme ceci:Sélection du champ de nom d'auteur à partir du flux Atom à l'aide de LINQ (C#)

XDocument stories = XDocument.Parse(xmlContent); 
XNamespace xmlns = "http://www.w3.org/2005/Atom"; 
var story = from entry in stories.Descendants(xmlns + "entry") 
      select new Story 
      { 
       Title = entry.Element(xmlns + "title").Value, 
       Content = entry.Element(xmlns + "content").Value 
      }; 

Comment pourrais-je aller sur la sélection de l'auteur -> champ de nom dans ce scénario?

Répondre

5

Vous voulez essentiellement:

entry.Element(xmlns + "author").Element(xmlns + "name").Value 

Mais vous pourriez vouloir conclure que, dans une méthode supplémentaire afin que vous pouvez facilement prendre les mesures appropriées si l'auteur ou des éléments manquent nom. Vous pourriez également vouloir réfléchir à ce que vous voulez faire s'il y a plus d'un auteur.

Le flux peut également avoir un élément auteur ... une autre chose à garder à l'esprit.

+0

parfait, merci! –

3

Il pourrait être quelque chose comme ceci:

 var story = from entry in stories.Descendants(xmlns + "entry") 
        from a in entry.Descendants(xmlns + "author") 
        select new Story 
        { 
         Title = entry.Element(xmlns + "title").Value, 
         Content = entry.Element(xmlns + "subtitle").Value, 
         Author = new AuthorInfo(
          a.Element(xmlns + "name").Value, 
          a.Element(xmlns + "email").Value, 
          a.Element(xmlns + "uri").Value 
         ) 
        }; 
+0

Je pensais utiliser une sorte de LINQ imbriqué mais je ne savais pas trop comment le faire. Je vais jouer avec votre suggestion, applaudissements! –

Questions connexes