我想这根本不是新的,但我找不到值得信赖的链接来帮助我正确阅读原子信息。我只想获得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:.....
谢谢
答案 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)
};