0
При ссылке на это article Я получаю сообщение NullReferenceException
, в котором указывается Object reference is not set to an instance of an object.
. Я не уверен, как исправить это решение, поскольку я выполнил действия, описанные в моей статье.Ошибка чтения RSS-канала с использованием LINQ to XML
Модели
public class RssModel
{
public string Title { get; set; }
public string Link { get; set; }
public string Description { get; set; }
public string Image { get; set; }
}
public class ReadRssModel
{
public static List<RssModel> GetRss()
{
var client = new WebClient();
var xmlData = client.DownloadString("http://finance.yahoo.com/rss/headline?s=msft,goog,aapl");
XDocument xml = XDocument.Parse(xmlData);
var rssData = (from item in xml.Descendants("item")
select new RssModel
{
Title = ((string)item.Element("title")),
Link = ((string)item.Element("link")),
Description = ((string)item.Element("description")),
Image = ((string)item.Element("enclosure").Attribute("url"))
}).Take(20).ToList();
return rssData;
}
}
ViewModel
public class RssViewModel
{
public List<RssModel> RssFeed { get; set; }
}
Контроллер
public class HomeController : Controller
{
public ActionResult Index()
{
//return View();
RssViewModel model = new RssViewModel();
model.RssFeed = ReadRssModel.GetRss();
return View(model);
}
}
Index
<div class="row">
<div class="col-md-8">
<h4>Feed</h4>
@foreach (var item in Model.RssFeed)
{
@item.Title <br />
@item.Description <br/>
}
</div>
Это потому, что в потомках 'item' нет элемента' enclosure'. –
Итак, я начинаю понимать это сейчас, когда я извлекаю данные успешно. На самом деле нет изображения для каждого элемента элемента, только для элемента Channel. Итак, что я делаю, это на самом деле тянуть элементы элемента и НЕ элементы канала. Можете ли вы предложить, как сделать ссылку реальной гиперссылкой в представлении? – Matthew
WebClient реализует IDisposable, вы должны [обернуть свой WebClient с помощью предложения use] (https://msdn.microsoft.com/en-us/library/yh598w02.aspx). –