Silverlight RSS Feeds einlesen

Datenbinding ist meiner Ansicht nach nur unzureichend gelöst in Silverlight. Die .NET RIA Services sind auch noch bei weitem nicht fertig. Selbst die Neue Version Silverlight 3 bringt nur ganz wenig Änderungen zum Thema Datenbinding. Mein Problem ist, das man unglaublich viel Infrastruktur Arbeit machen muss, um die typische Customer Tabelle von der Nordwind Datenbank anzuzeigen. Und es gibt mindestens fünf oder mehr Möglichkeiten das zu tun. Erinnert mich irgendwie an RDO und ADO und ODBC usw. Aber das ist eine andere Geschichte.

Ich will heute mal auf Feature hinwiesen das es schon seit Silverlight 2 gibt die RSS Syndication Klassen. Diese übernehmen die Dreckarbeit mit den Formaten wie RSS und ATOM umzugehen. Wer das schon mal gemacht hat, weis der Teufel liegt im Detail.

Der Download erfolgt wie üblich per Webclient und asynchron. Die empfangenen Daten werden dann in einen XAML Reader geladen und dann in eine Liste vom Typ Syndication Feed. Man erspart sich das aufwendige manuelle parsen, Typüberprüfungen und das erstellen einer Datenklasse für die Items.

Private Sub OnClick(sender As Object, args As EventArgs) 
   Dim wc As New WebClient() 
   wc.DownloadStringAsync(New Uri("http://http://rss.focus.de/fol/XML/webslice/fol_newsticker.html")) 
  AddHandler wc.DownloadStringCompleted, AddressOf rssCallback   
End Sub 
        
Private Sub rssCallback(sender As Object,e As DownloadStringCompletedEventArgs) 
   Dim reader As XmlReader = XmlReader.Create(New StringReader(e.Result)) 
   Dim feed As SyndicationFeed = SyndicationFeed.Load(reader) 
   datagrid1.ItemsSource = feed.Items 
End Sub 

Kommentar schreiben