我正在尝试使用linq提取rss feed。认为这很简单,但它不会返回任何节点。可能我必须去频道/项目节点,但不知道如何。
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 :(得分:1)
这里有两个问题......首先,你应该纠正这一行:
.pubDate = Date.Parse(node.Element("pubDate").Value)
pubDate是XML中区分大小写的节点。其次,您的dataSource永远不会工作,因为LINQ是惰性计算。您必须使用ToList()或枚举您的集合的类似方法。如果在Visual Studio 2010中进行调试,则会看到rssResultSet没有值,因为只有在代码调用它时才会枚举它。替换为:
DataGridView1.DataSource = rssResultSet.ToList()
我的最后一条建议是将您的DataGrid设置为AutoGenerate它的列。
答案 1 :(得分:0)
pubdate上的外壳是错误的。它应该是“pubDate”。否则,工作正常。