C# 使用彭博新闻的RSS提要
我一直在寻找使用彭博rss源的解决方案 请看一下他们的XML 正如你所看到的,我想得到,但不知道如何得到 目前,我正在使用这个C# 使用彭博新闻的RSS提要,c#,asp.net,rss,C#,Asp.net,Rss,我一直在寻找使用彭博rss源的解决方案 请看一下他们的XML 正如你所看到的,我想得到,但不知道如何得到 目前,我正在使用这个 List<FeedModel> list = new List<FeedModel>(); XmlReader reader = XmlReader.Create(rssUri); SyndicationFeed feed = SyndicationFeed.Load(reader); var feedItems = from item in
List<FeedModel> list = new List<FeedModel>();
XmlReader reader = XmlReader.Create(rssUri);
SyndicationFeed feed = SyndicationFeed.Load(reader);
var feedItems = from item in feed.Items
select new FeedModel()
{
Content = item.Summary.Text,
Id = item.Id,
PublishDate = item.PublishDate.DateTime.ToString(),
Title = item.Title.Text,
Link = item.Links.First().Uri.ToString()
};
return feedItems.ToList();
我认为它工作得很好,但不是彭博社。请帮忙
额外信息
我是一名php开发人员,我需要用c语言为我的公司开发一个小模块。下面是一个如何获得扩展属性的快速示例 用法 代码 显然,您可以根据需要将GenerateModelFromRssFeed方法设置为静态。非常简单:
var doc = XDocument.Load("http://www.bloomberg.com/feed/podcast/on-the-economy.xml");
XNamespace itunes = "http://www.itunes.com/dtds/podcast-1.0.dtd";
var query = doc.Root.Elements("channel")
.Elements("item")
.Select(p => new BloomergFeeds
{
Title = p.Element("title").Value,
Link = p.Element("link").Value,
Guid = p.Element("guid").Value,
PublishDate = p.Element("pubDate").Value,
Itunes = new Itunes
{
Author = p.Elements(itunes + "author").First().Value,
Subtitle = p.Elements(itunes + "subtitle").First().Value,
Summary = p.Elements(itunes + "summary").First().Value,
Duration = p.Elements(itunes + "duration").First().Value,
Keywords = p.Elements(itunes + "keywords").First().Value,
}
}).ToList();
public class BloomergFeeds
{
public string Title { get; set; }
public string Link { get; set; }
public string Guid { get; set; }
public string PublishDate { get; set; }
public Itunes Itunes { get; set; }
}
public class Itunes
{
public string Author { get; set; }
public string Subtitle { get; set; }
public string Summary { get; set; }
public string Duration { get; set; }
public string Keywords { get; set; }
}
输出的格式很好:
显然,您可以更进一步,将关键字拆分为List的新属性,为link等添加新属性附件
享受。您正在使用/瞄准哪个版本的.NET Framework?凯恩,谢谢。您介意解释一下如何使用ElementExtensions来获取数据吗?这个解决方案是可行的,但现在我需要用Plurpy获得yahoo weather rss,感谢这是一个很好的解决方案,因为我还是c语言的新手,我想如何在GridView中显示Itunes?我尝试了dataSource=query,但它没有显示Itunes部分:请将我的解决方案标记为答案。你在做WPF还是WinForms应用程序?呃。我正在做网页,也就是.aspx。顺便说一句,两个答案都有效,我不知道该选哪个>
public class FeedModel
{
public string Id { get; set; }
public string Content { get; set; }
public DateTime PublishDate { get; set; }
public string Title { get; set; }
public string Link { get; set; }
public string Summary { get; set; }
}
public IEnumerable<FeedModel> GenerateModelFromRssFeed(string feedUri)
{
if (string.IsNullOrWhiteSpace(feedUri)) throw new ArgumentNullException(feedUri);
using (var reader = XmlReader.Create(feedUri))
{
SyndicationFeed feed = SyndicationFeed.Load(reader);
if (feed == null) throw new ApplicationException("Bloomberg feed cannot be downloaded");
return from item in feed.Items
select new FeedModel
{
// this looks a little ugly but is necessary to check if the object (Summary) is null as an
// exception will be thrown when trying to access a property on a null object
Content = item.Summary == null ? string.Empty : item.Summary.Text,
Id = item.Id,
PublishDate = item.Summary == null ? DateTime.MaxValue : item.PublishDate.DateTime,
Title = item.Title == null ? string.Empty : item.Title.Text,
Link = item.Links.Any() ? item.Links.First().Uri.ToString() : string.Empty,
// add in additional logic to test if the element extension is not null
Summary = item.ElementExtensions.FirstOrDefault(x => x != null && x.GetObject<XElement>().Name.LocalName.ToLowerInvariant() == "summary").GetObject<XElement>().Value
};
}
}
var doc = XDocument.Load("http://www.bloomberg.com/feed/podcast/on-the-economy.xml");
XNamespace itunes = "http://www.itunes.com/dtds/podcast-1.0.dtd";
var query = doc.Root.Elements("channel")
.Elements("item")
.Select(p => new BloomergFeeds
{
Title = p.Element("title").Value,
Link = p.Element("link").Value,
Guid = p.Element("guid").Value,
PublishDate = p.Element("pubDate").Value,
Itunes = new Itunes
{
Author = p.Elements(itunes + "author").First().Value,
Subtitle = p.Elements(itunes + "subtitle").First().Value,
Summary = p.Elements(itunes + "summary").First().Value,
Duration = p.Elements(itunes + "duration").First().Value,
Keywords = p.Elements(itunes + "keywords").First().Value,
}
}).ToList();
public class BloomergFeeds
{
public string Title { get; set; }
public string Link { get; set; }
public string Guid { get; set; }
public string PublishDate { get; set; }
public Itunes Itunes { get; set; }
}
public class Itunes
{
public string Author { get; set; }
public string Subtitle { get; set; }
public string Summary { get; set; }
public string Duration { get; set; }
public string Keywords { get; set; }
}