C# 使用MVC阅读多个RSS源&;Linq到XML
说到编码,我真的很生疏,一直在努力寻找答案,但现在我已经穷途末路了 我的网站有一个存储RSS URL的数据库。就我的一生而言,我不知道如何循环并显示所有RSS提要数据 我可以很好地显示一个提要,但是显示所有提要,我只是不知道如何才能让它们全部显示出来。任何帮助都将不胜感激 型号:RSS.csC# 使用MVC阅读多个RSS源&;Linq到XML,c#,asp.net-mvc,asp.net-mvc-3,linq-to-xml,C#,Asp.net Mvc,Asp.net Mvc 3,Linq To Xml,说到编码,我真的很生疏,一直在努力寻找答案,但现在我已经穷途末路了 我的网站有一个存储RSS URL的数据库。就我的一生而言,我不知道如何循环并显示所有RSS提要数据 我可以很好地显示一个提要,但是显示所有提要,我只是不知道如何才能让它们全部显示出来。任何帮助都将不胜感激 型号:RSS.cs namespace MyWebsite.Models { public class RSS { public string Link { get; set; }
namespace MyWebsite.Models
{
public class RSS
{
public string Link { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string PubDate { get; set; }
public string Date { get; set; }
}
}
型号:RSSReader.cs
namespace MyWebsite.Models
{
public class RSSReader
{
private static string _URL = "";
public static IEnumerable<RSS> GetRSSFeed()
{
IEnumerable<RSS> feeds = null;
XDocument feedXml = null;
XNamespace rss = "http://purl.org/rss/1.0/";
XNamespace dc = "http://purl.org/dc/elements/1.1/";
int count = 0;
foreach (var url in BansheeData.GetURL(count))
{
_URL = url.url1;
feedXml = XDocument.Load(_URL);
feeds = from feed in feedXml.Descendants(rss + "item")
select new RSS
{
Title = feed.Element(rss + "title").Value,
Link = feed.Element(rss + "link").Value,
Date = feed.Element(dc + "date").Value.Remove(10)
};
count++;
}
return feeds;
}
}
}
查看:\u RSSFeed.cshtml
@model IEnumerable<MyWebsite.Models.RSS>
@foreach (var item in Model) {
<section>
<header class="overflow">
<h1>
<a href="@item.Link" target="_blank" class="alt overflow">
<span class="fl">@Html.Raw(item.Title)</span>
<span class="ref fr">Source, @Html.Encode(item.Date)</span>
</a>
</h1>
</header>
</section>
}
@model IEnumerable
@foreach(模型中的变量项){
}
我想我在你的代码中发现了一个问题。您缺少为每个迭代向列表中添加项目的功能
因此,不是:
foreach (var url in BansheeData.GetURL(count))
{
_URL = url.url1;
feedXml = XDocument.Load(_URL);
feeds = from feed in feedXml.Descendants(rss + "item")
select new RSS
{
Title = feed.Element(rss + "title").Value,
Link = feed.Element(rss + "link").Value,
Date = feed.Element(dc + "date").Value.Remove(10)
};
count++;
}
return feeds;
您尝试在每次迭代的列表中添加范围:
var rssList = new List<RSS>;
foreach (var url in BansheeData.GetURL(count))
{
_URL = url.url1;
feedXml = XDocument.Load(_URL);
feeds = from feed in feedXml.Descendants(rss + "item")
select new RSS
{
Title = feed.Element(rss + "title").Value,
Link = feed.Element(rss + "link").Value,
Date = feed.Element(dc + "date").Value.Remove(10)
};
rssList.AddRange(feeds);
count++;
}
return rssList;
var rssList=新列表;
foreach(BansheeData.GetURL(计数)中的变量url)
{
_URL=URL.url1;
feedXml=XDocument.Load(_URL);
feed=来自feedXml.substands(rss+“项”)中的提要
选择新RSS
{
Title=feed.Element(rss+“Title”).Value,
Link=feed.Element(rss+“Link”).Value,
日期=feed.Element(dc+“日期”).Value.Remove(10)
};
rssList.AddRange(提要);
计数++;
}
返回rssList;
这应该会有所帮助。现在你应该得到RSS的全部列表了。核心逻辑是当您迭代并在每个迭代周期中获得所需的项时,您应该记住它们。这意味着将它们保存在临时列表中。太好了!我很高兴它有帮助!
var rssList = new List<RSS>;
foreach (var url in BansheeData.GetURL(count))
{
_URL = url.url1;
feedXml = XDocument.Load(_URL);
feeds = from feed in feedXml.Descendants(rss + "item")
select new RSS
{
Title = feed.Element(rss + "title").Value,
Link = feed.Element(rss + "link").Value,
Date = feed.Element(dc + "date").Value.Remove(10)
};
rssList.AddRange(feeds);
count++;
}
return rssList;