2009-12-17 2 views
1

Я пытаюсь извлечь rss-канал, используя linq. Думал, что это будет просто, но он не возвращает никаких узлов. вероятно, мне нужно идти на узел канала/элемента, но не знаю, как это сделать.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

Какая ошибка/проблема у вас с кодом, который у вас есть? Вторая строка ur-кода должна давать u xml xml в объекте XDocument. – Perpetualcoder

+0

Его работа хорошая до второй линии. Я не могу получить доступ к rssDoc.Descendants ("item"). Не дал мне никакой ошибки. – vamsivanka

ответ

1

Два вопроса здесь ... Во-первых, вы должны исправить эту строку:

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

PubDate является узел чувствителен к регистру в XML. Во-вторых, ваш dataSource никогда не будет работать, потому что LINQ - это ленивое вычисление. Вы должны использовать ToList() или аналогичный метод, который перечисляет вашу коллекцию. Если вы выполните отладку в Visual Studio 2010, вы увидите, что rssResultSet не имеет значения, потому что это только перечисление, когда ваш код вызывает его. Заменить это:

DataGridView1.DataSource = rssResultSet.ToList() 

Мой последний совет должен установить DataGrid для AutoGenerate это столбцы.

0

Неверный обсадной колонне. Это должно быть «pubDate». в противном случае, работает нормально.

Смежные вопросы