RSS订阅LINQ

问题描述:

我想使用LINQ来提取RSS源。认为这很简单,但它没有返回任何节点。可能我必须去频道/项目节点,但不知道如何。RSS订阅LINQ

Dim rssUrl As String = "http://webclip.in/rss.aspx?u=mostliked" 
Dim rssDoc As XDocument = XDocument.Load(rssUrl) 
Dim rssResultSet = From node In rssDoc.Descendants("item") _ 
        Select New With { _ 
        .title = node.Element("title").Value, _ 
        .link = node.Element("link").Value, _ 
        .description = node.Element("description").Value, _ 
        .pubDate = Date.Parse(node.Element("pubdate").Value) _ 
} 

DataGridView1.DataSource = rssResultSet 
+0

你在这里面对的代码有什么错误/问题?第二行代码应该给你XDocument对象中的RSS xml。 – Perpetualcoder 2009-12-17 05:53:17

+0

其工作良好,直到第二行。我无法访问rssDoc.Descendants(“item”)。 不给我任何错误。 – vamsivanka 2009-12-17 19:11:40

两个问题。首先,你应该纠正这一行:

.pubDate = Date.Parse(node.Element("pubDate").Value) 

的pubdate的是XML的情况下,敏感的节点。其次,你的dataSource将永远不会工作,因为LINQ是懒惰的计算。您必须使用ToList()或枚举您的集合的类似方法。如果在Visual Studio 2010中进行调试,则会看到rssResultSet没有值,因为只有在代码调用它时才枚举它。替换为:

DataGridView1.DataSource = rssResultSet.ToList() 

我最后一条建议是将您的DataGrid设置为AutoGenerate它的列。

pubdate上的外壳是错误的。它应该是“pubDate”。否则,工作正常。这里