vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Dateisystem · XML   |   VB-Versionen: VB2005, VB200805.11.08
RSS-Feeds erstellen, aktuell halten und lesen

RSS-Feeds sind sehr beliebt, vorallem bei Webseiten die regelmässig neuen Inhalt bieten.

Autor:   Jan GräfenBewertung:     [ Jetzt bewerten ]Views:  14.915 
ohne HomepageSystem:  Win2k, WinXP, Win7, Win8, Win10, Win11kein Beispielprojekt 

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.
System.Text liefert uns das Encoding und System.Net benötigen wir nachher um einen RSS auch zu lesen.
System.IO ist nicht zwingend von nöten, doch ich benutzte es beim schreiben des Codes um die ältere Version zu überschreiben.

  ''' <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.
Dazu brauchen wir wieder eine Funktion die folgendermaßen aussehen könnte:

  ''' <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 14.915 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6

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.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel