Note that there are some explanatory texts on larger screens.

plurals
  1. POLINQ with ATOM feeds
    text
    copied!<p>I am trying to create a simple Silverlight application that calls an ATOM feed and displays the article title and submit date. I found this very easy to do with RSS feeds and LINQ but I am stuck trying to do the same with an ATOM feed. The code below produces no errors but it also produced no results! What am I missing?</p> <p>Source ATOM feed: weblogs.asp.net/scottgu/atom.aspx</p> <p>Source Tutorial: www.switchonthecode.com/tutorials/silverlight-datagrid-the-basics</p> <p>Source code:</p> <pre><code>using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using System.Xml.Linq; namespace BasicDataGridTutorial { public partial class Page : UserControl { public Page() { InitializeComponent(); } private void btnPopulate_Click(object sender, RoutedEventArgs e) { //disable the populate button so it's not clicked twice //while the data is being requested this.btnPopulate.IsEnabled = false; //make a new WebClient object WebClient client = new WebClient(); //hook the event that's called when the data is received client.DownloadStringCompleted += client_DownloadStringCompleted; //tell the WebClient to download the data asynchronously client.DownloadStringAsync( //new Uri("http://feeds.feedburner.com/SwitchOnTheCode?format=xml")); new Uri("http://weblogs.asp.net/scottgu/atom.aspx")); } private void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) { this.btnPopulate.IsEnabled = true; if (e.Error == null) { XDocument document = XDocument.Parse(e.Result); XNamespace xmlns = "http://www.w3.org/2005/Atom"; var sotcPosts = from entry in document.Descendants(xmlns+ "entry") select new SOTCPost { Title = (string)entry.Element(xmlns + "feedEntryContent").Value, Date = (string)entry.Element(xmlns + "lastUpdated").Value }; this.sotcDataGrid.ItemsSource = sotcPosts; } } private void btnClear_Click(object sender, RoutedEventArgs e) { this.sotcDataGrid.ItemsSource = null; } } public class SOTCPost { public string Title { get; set; } public string Date { get; set; } } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload