gpt4 book ai didi

c# - 使用 MVC 和 Linq to XML 读取多个 RSS 提要

转载 作者:行者123 更新时间:2023-11-30 12:30:50 24 4
gpt4 key购买 nike

在编码方面我真的很生疏,一直在努力寻找答案,但现在我已经筋疲力尽了。

我的网站有一个存储 RSS URL 的数据库。对于我的生活,我无法弄清楚如何遍历并显示所有 RSS 提要数据。

我可以让一个 Feed 显示得很好,但是要显示所有这些,我只是不知道如何才能让它们全部显示。任何帮助将不胜感激!

模型:RSS.cs

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;
}
}
}

Controller :RSSController.cs

public ActionResult Index()
{
var urlFeed = MyWebsite.Models.RSSReader.GetRSSFeed();
return View(urlFeed);
}

查看: _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>
}

最佳答案

我想我在您的代码中发现了一个问题。您缺少为每次迭代将项目添加到列表中。

所以代替:

            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;

您尝试在每次迭代中将 AddRange 放入列表中:

        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;

这应该有所帮助。现在您应该得到 RSS 的完整列表。核心逻辑是当您进行迭代并在每个迭代周期中获得所需的项目时,您应该记住它们。这意味着将它们保存在临时列表中。

关于c# - 使用 MVC 和 Linq to XML 读取多个 RSS 提要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15289693/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com