【问题标题】:.NET MVC Linq -> XML RSS reader : Twitter XML Parsing Error.NET MVC Linq -> XML RSS 阅读器:Twitter XML 解析错误
【发布时间】:2010-08-20 04:28:36
【问题描述】:

似乎无论我做什么,我的 twitter RSS 提要都无法显示在我的视图中。我没有收到任何错误,并且 RSS 提要正确加载,但我无法获取模型的信息...

这是我的视图模型

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>

【问题讨论】:

    标签: c# .net asp.net-mvc xml linq-to-xml


    【解决方案1】:

    您的 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】:

      我怀疑问题出在您的 XML 解析中。您正确加载了推文,但xmlTreeTwitter.Descendants 函数没有返回任何内容,最后您的model.Tweets.Count() 等于0,这就是您在视图中没有得到任何输出的原因。确保您使用正确的命名空间和正确的选择器来解析 XML 响应。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-03
        • 1970-01-01
        • 2012-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多