阅读atom提要标题和发布日期时间
本文关键字:日期 时间 布日期 atom 标题 阅读 | 更新日期: 2023-09-27 18:25:43
我想这根本不是什么新鲜事,但我找不到一个值得信赖的链接来帮助我正确阅读atom提要。我只想得到订阅源的标题,发布日期和时间。例如,在以下链接中http://blogs.technet.com/b/markrussinovich/atom.aspx我想显示
Title 1: The Case of My Mom’s Broken Microsoft Security Essentials Installation
Date time : 1-5-2005 12:00
Title 2:.....
感谢
.Net框架公开了一组class和API,专门用于处理联合XML提要,包括RSS 2.0和Atom 1.0,它们可以在System.ServiceModel.Syndication命名空间中找到。
基本类为:
System.ServiceModel.Syndication.Syndication联合提要表示Atom或RSS格式的XML提要
System.ServiceModel.Syndication.ISyndicationItem表示Feed、"entry"或"Item"元素中的Items,这些元素作为SyndicationFeed IEnumerable Items的属性公开。
就我个人而言,我更喜欢使用System.ServiceModel.Syndication命名空间中公开的类和API,而不是Linq to XML,因为您直接使用强类型对象而不是模糊的XElements。
WebRequest request = WebRequest.Create(this.Url);
request.Timeout = Timeout;
using (WebResponse response = request.GetResponse())
using (XmlReader reader = XmlReader.Create(response.GetResponseStream()))
{
SyndicationFeed feed = SyndicationFeed.Load(reader);
if (feed != null)
{
foreach (var item in feed.Items)
{
// Work with the Title and PubDate properties of the FeedItem
}
}
}
var xdoc = XDocument.Load("http://blogs.technet.com/b/markrussinovich/atom.aspx");
XNamespace ns = XNamespace.Get("http://www.w3.org/2005/Atom");
var info = xdoc.Root
.Descendants(ns+"entry")
.Select(n =>
new
{
Title = n.Element(ns+"title").Value,
Time = DateTime.Parse(n.Element(ns+"published").Value),
}).ToList();
尝试这个Linq到xml的查询,
XDocument xml = XDocument.Load("http://blogs.technet.com/b/markrussinovich/atom.aspx");
XNamespace ns = XNamespace.Get("http://www.w3.org/2005/Atom");
var xmlFeed = from post in xml.Descendants(ns + "entry")
select new
{
Title = post.Element(ns + "title").Value,
Time = DateTime.Parse(post.Element(ns + "published").Value)
};