代码之家  ›  专栏  ›  技术社区  ›  contactmatt

.NET MVC Linq->XML RSS阅读器:Twitter XML解析错误

  •  1
  • contactmatt  · 技术社区  · 15 年前

    似乎无论我做什么,我都无法让我的twitter RSS提要出现在我的视图中。我没有得到任何错误,而且RSS提要加载正确,我只是无法获取模型的信息。。。

    这是我的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; }
            }
        }
    }
    

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

    以下是我的观点:

    %@ 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>
    
    2 回复  |  直到 15 年前
        1
  •  2
  •   Dan    15 年前

    您的LINQ查询就是问题所在。以下将起作用:

            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
  •  2
  •   Darin Dimitrov    15 年前

    xmlTreeTwitter.Descendants 函数不返回任何结果 model.Tweets.Count() 等于 0 这就是视图中没有任何输出的原因。确保使用正确的名称空间和正确的选择器来解析XML响应。

    推荐文章