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

时间:2012-02-25 18:22:13

标签: c# c#-4.0

我想这根本不是新的,但我找不到值得信赖的链接来帮助我正确阅读原子信息。我只想获得Feed的标题,发布的日期和时间。例如,在以下链接中 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:.....

谢谢

3 个答案:

答案 0 :(得分:8)

.Net框架公开了一组Classes和API,专门用于处理Syndicated XML Feeds,包括RSS 2.0和Atom 1.0,它们可以在System.ServiceModel.Syndication命名空间中找到。

基本课程是:
System.ServiceModel.Syndication.SyndicationFeed表示Atom或RSS格式的XML Feed。
System.ServiceModel.Syndication.SyndicationItem表示Feed中的项目,“条目”或“项目”元素,这些元素作为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
                    }
                }
            }

答案 1 :(得分:3)

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();

答案 2 :(得分:1)

尝试使用Linq to 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)
              };