2010-08-17 13 views
1

Il semble que peu importe ce que je fais, je ne peux pas obtenir mon flux RSS twitter pour apparaître sur mon point de vue. Je ne reçois pas des erreurs, et les charges de flux RSS correctement, je ne peux pas saisir l'information du modèle ....NET MVC Linq -> Lecteur RSS XML: Erreur d'analyse XML Twitter

Voici mon ViewModel

namespace MvcMusicStore.ViewModels 
{ 
    public class HomeRssFeedViewModel 
    { 
     public IEnumerable<TwitterPosts> Tweets { get; set; } 

     public HomeRssFeedViewModel() 
     { 
      Tweets = GetPosts(); 
     } 

     public IEnumerable<TwitterPosts> GetPosts() 
     { 
      var xmlTreeTwitter = XDocument.Load("http://twitter.com/statuses/user_timeline/..."); 
      XNamespace xmlns = "http://www.w3.org/2005/Atom"; 

      return from item in xmlTreeTwitter.Descendants(xmlns + "item") 
        select new TwitterPosts 
        { 
         pubDate = item.Element(xmlns + "pubDate").Value, 
         Title = item.Element(xmlns + "Title").Value, 
         Link = item.Element(xmlns + "link").Value 
        }; 
     } 
     public class TwitterPosts 
     { 
      public string pubDate { get; set; } 
      public string Title { get; set; } 
      public string Link { get; set; } 
     } 
    } 
} 

Voici mon contrôleur:

public ActionResult Index() 
{ 
    var viewModel = new HomeRssFeedViewModel(); 
    return View(viewModel); 
} 

Voici mon Vue:

%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MvcMusicStore.ViewModels.HomeRssFeedViewModel>" %> 

... 
     <div class="rss"> 
      <% foreach(var tweet in Model.Tweets) 
       {%> 
        <b><%: tweet.Title %></b> 
       <% } %> 
     </div> 

Répondre

2

Votre requête LINQ est le problème. Ce qui suit va fonctionner:

 public IEnumerable<TwitterPosts> GetPosts() 
     { 
      var xmlTreeTwitter = XDocument.Load("http://twitter.com/statuses/user_timeline/#####.rss"); 

      var v = from item in xmlTreeTwitter.Descendants("rss").Elements("channel").Elements("item") 
        select new TwitterPosts 
        { 
         pubDate = item.Element("pubDate").Value, 
         Title = item.Element("title").Value, 
         Link = item.Element("link").Value 
        }; 

      return v; 
     } 
     public class TwitterPosts 
     { 
      public string pubDate { get; set; } 
      public string Title { get; set; } 
      public string Link { get; set; } 
     } 
2

Je pense que le problème est dans votre analyse XML. Vous chargez correctement les tweets mais la fonction xmlTreeTwitter.Descendants ne renvoie rien et finalement votre model.Tweets.Count() est égal à 0 qui est la raison pour laquelle vous n'obtenez aucune sortie dans la vue. Assurez-vous que vous utilisez l'espace de noms correct et les sélecteurs appropriés pour analyser la réponse XML.