XDocument.Descendants(itemName) – 查找限定名称的问题

我正在尝试从网站上阅读XML-RSS-Feed。 因此,我使用异步下载并使用XDocument.Parse()方法创建XDocument

该文件旨在非常简单,如下所示:

   ... ...  

现在我想读出所有的项目。 因此我试过:

 foreach (XElement NewsEntry in xDocument.Descendants("item")) 

但这不起作用。 所以我在这个板上发现了一个使用限定名称的post,因为在根元素中定义了一些名称空间:

   

好吧,我尝试了所有3个可用的名称空间 – 没有任何对我有用:

 XName itemName = XName.Get("item", "http://www.w3.org/1999/02/22-rdf-syntax-ns#"); XName itemName2 = XName.Get("item", "http://purl.org/dc/elements/1.1/"); XName itemName3 = XName.Get("item", "http://purl.org/rss/1.0/modules/syndication/"); 

任何帮助,将不胜感激。 (通常我正在使用Regex进行XML分析 – 但这次我正在为移动设备开发,因此需要关注性能。)

您还没有在rdf声明的末尾尝试使用默认命名空间 :

 xmlns="http://purl.org/rss/1.0/" 

这是有道理的,因为默认命名空间中的任何元素都不需要在元素名称前面加上命名空间。

不直接解决XDocument RSS读取问题。 但是,为什么不使用提供的SyncdicationFeed类来加载Feed? http://msdn.microsoft.com/en-us/library/system.servicemodel.syndication.syndicationfeed.aspx

试试这个

 var elements = from p in xDocument.Root.Elements() where p.Name.LocalName == "item" select p; foreach(var element in elements) { //Do stuff }