.NET MVC Linq -> XML RSS Reader: Ошибка синтаксического анализа XML в Twitter - PullRequest
1 голос
/ 17 августа 2010

Кажется, что независимо от того, что я делаю, я не могу получить свой твиттер 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 ]

2 голосов
/ 20 августа 2010

Ваш запрос 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 голосов
/ 17 августа 2010

Я подозреваю, что проблема в вашем анализе XML. Вы правильно загружаете твиты, но функция xmlTreeTwitter.Descendants ничего не возвращает, и, наконец, ваш model.Tweets.Count() равен 0, поэтому вы не получаете никакого вывода в представлении. Убедитесь, что вы используете правильное пространство имен и правильные селекторы для анализа XML-ответа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...