RSS-Feeds sind sehr beliebt, vorallem bei Webseiten die regelmässig neuen Inhalt bieten. Damit man die Seite nicht selber täglich besuchen muss kann man auch, falls angeboten, einfach einen RSS-Feed abonnieren und wird immer über aktuelle Änderungen informiert, quasi wie ein Newsletter. RSS-Feeds basieren auf XML, sprich wir sollten uns erst einmal angucken wie so eine Feed-Datei aufgebaut ist. <rss version="2.0"> <channel> <title>Titel</title> <link>http://link-zur-seite.de/</link> <description>Beschreibung</description> <language>de-de</language> <item> <titel>Titel des Beitrages</titel> <description>Beschreibung des Beitrages</description> <link>http://link-zur-seite.de/artikel/</link> <pubDate>Datum</pubDate> </item> </channel> </rss> Der Aufbau ist recht selbsterklärend, wie ich finde. Wenn wir einen solchen RSS-Feed erzeugen möchten müssen wir als erstes folgends tuen, eine XML-Datei erzeugen. Dafür brauchen wir folgende Namespaces: Imports System.Xml Imports System.Text Imports System.Net Imports System.IO System.XML ist natürlich damit wir die VB eigenen Mittel zur erzeugung von XML-Dateien nutzten können. ''' <summary> ''' Funktion zum erzeugen einer RSS XML-Datei. ''' </summary> ''' <param name="ChannelTitel">Titel den der Channel haben soll.</param> ''' <param name="ChannelLink">Link zur Seite des Feeds.</param> ''' <param name="ChannelDesc">Beschreibung des Feeds.</param> ''' <param name="ChannelLang">Sprache des Feeds.</param> ''' <param name="ItemTitel">Titel des ersten Eintrages.</param> ''' <param name="ItemDesc">Beschreibung des ersten Eintrages.</param> ''' <param name="ItemLink">Link zum Original-Beitrag.</param> ''' <param name="ItemDate">Erstellungsdatum.</param> ''' <param name="Location">Pfad zum gewünschtem Speicherort der RSS XML-Datei.</param> Public Sub CreateRSS(ByVal ChannelTitel As String, _ ByVal ChannelLink As String, _ ByVal ChannelDesc As String, _ ByVal ChannelLang As String, _ ByVal ItemTitel As String, _ ByVal ItemDesc As String, _ ByVal ItemLink As String, _ ByVal ItemDate As String, _ ByVal Location As String) If File.Exists(Location) = True Then File.Delete(Location) End If Dim Enc As New UnicodeEncoding Dim rssWriter As XmlTextWriter = New XmlTextWriter(Location, Enc) With rssWriter .Formatting = Formatting.Indented .Indentation = 4 .WriteStartDocument() .WriteStartElement("rss") .WriteAttributeString("version", "", "2.0") .WriteStartElement("channel") ' Channel Description .WriteStartElement("title") .WriteValue(ChannelTitel) .WriteEndElement() .WriteStartElement("link") .WriteValue(ChannelLink) .WriteEndElement() .WriteStartElement("description") .WriteValue(ChannelDesc) .WriteEndElement() .WriteStartElement("language") .WriteValue(ChannelLang) .WriteEndElement() ' Content .WriteStartElement("item") .WriteStartElement("title") .WriteValue(ItemTitel) .WriteEndElement() .WriteStartElement("description") .WriteValue(ItemDesc) .WriteEndElement() .WriteStartElement("link") .WriteValue(ItemLink) .WriteEndElement() .WriteStartElement("pubDate") .WriteValue(ItemDate) .WriteEndElement() .WriteEndElement() .WriteEndElement() .WriteEndElement() .WriteEndDocument() .Close() End With End Sub Auch dieser Code ist, wie ich finde, recht selbsterklärend Wenn wir nun aber nun keinen neuen Feed, sondern nur einen neuen Eintrag erzeugen wollen, können wir das mit dieser Funktion tun: ''' <summary> ''' Fügt dem Feed einen Artikel hinzu ''' </summary> ''' <param name="Title">Titel des neuen Artikels.</param> ''' <param name="Link">Link zum Original-Beitrag.</param> ''' <param name="Desc">Beschreibung des neuen Artikels.</param> ''' <param name="sDate">Erstellungsdatum des Artikels.</param> ''' <param name="Location">Pfad zur RSS XML-Datei</param> Public Sub AddRSSArticel(ByVal Title As String, _ ByVal Link As String, _ ByVal Desc As String, _ ByVal sDate As String, _ ByVal Location As String) Dim rssDoc As New XmlDocument Dim rssArticle, rssNew As XmlNode Dim XPath As String = "//item" rssDoc.Load(Location) rssArticle = rssDoc.SelectSingleNode(XPath) rssNew = rssDoc.CreateElement("item") rssNew.InnerXml = "<title>" & Title & "</title>" & _ "<description>" & Desc & "</description>" & _ "<link>" & Link & "</link>" & _ "<pubDate>" & sDate & "</pubDate>" rssDoc.SelectSingleNode("//channel").InsertBefore(rssNew, rssArticle) rssDoc.Save(Location) End Sub Nun wollen wir auch noch einen RSS-Feed lesen können. ''' <summary> ''' Funktion zum lesen eines RSS-Feeds. ''' </summary> ''' <param name="URL">URL zum RSS-Feed.</param> ''' <returns>1-Dimensionalen Array mit 3 Einträgen, die jeweils Titel, ''' Link und Beschreibung enthalten.</returns> Public Function ReadRSS(ByVal URL As String) As String() Dim rssRequest As WebRequest = System.Net.WebRequest.Create(URL) Dim rssResponse As WebResponse = rssRequest.GetResponse() Dim rssStream As Stream = rssResponse.GetResponseStream() Dim rssDoc As New XmlDocument() rssDoc.Load(rssStream) Dim rssSections As XmlNodeList = rssDoc.SelectNodes("rss/channel/item") Dim Title As String = "" Dim Link As String = "" Dim Description As String = "" Dim sResult(2) As String Dim i As Integer For i = 0 To rssSections.Count - 1 Dim rssInformation As XmlNode rssInformation = rssSections.Item(i).SelectSingleNode("title") If rssInformation.Equals(Nothing) = False Then Title = rssInformation.InnerText Else Title = "" End If rssInformation = rssSections.Item(i).SelectSingleNode("link") If rssInformation.Equals(Nothing) = False Then Link = rssInformation.InnerText Else Link = "" End If rssInformation = rssSections.Item(i).SelectSingleNode("description") If rssInformation.Equals(Nothing) = False Then Description = rssInformation.InnerText Else Description = "" End If sResult(0) = Title sResult(1) = Link sResult(2) = Description Return sResult Next End Function Viel Spaß damit Dieser Tipp wurde bereits 15.509 mal aufgerufen.
Anzeige
![]() ![]() ![]() Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 ![]() ![]() Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats ![]() Dieter Otter sevTabStrip: Rechtsklick auf Reiter erkennen Eine Funktion, mit der sich prüfen lässt, auf welchen Tab-Reiter ein Mausklick erfolgte Neu! sevCommand 4.0 ![]() Professionelle Schaltflächen im modernen Design! Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |