阅读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:.....

感谢

阅读atom提要标题和发布日期时间

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