Zusammenfassung
Lesen und verwalten Sie Ihre Lieblingsnachrichten mit einer Access-Datenbank.
Techniken
VBA, XML, RSS
Voraussetzungen
Access 2000 und höher
Beispieldatei
RSSNewsReader.mdb
Dirk Bauer, Düsseldorf
RSS ist in kurzer Zeit zum Synonym für aktuelle Meldungen aus dem Internet geworden. Falls Sie mehr über die zugrunde liegende Technik erfahren möchten oder beliebige, öffentliche RSS-Feeds in Ihre eigene Access-Anwendung integrieren wollen, bietet Ihnen dieser Artikel die notwendigen Hintergründe und Lösungsansätze. Zusätzlich können Sie die hier beschriebene Lösung direkt einsetzen und Informationen aus den gewünschten Nachrichtenkanälen in eine Access-Datenbank einlesen.
RSS ist die Abkürzung für Really Simple Syndication und kann mit „echt einfache Verbreitung“ übersetzt werden. Der Anwender ist mit Hilfe eines RSS-Readers in der Lage, ganze Webseiten oder Teile davon zu „abonnieren“ und regelmäßig Updates der Inhalte zu beziehen.
RSS wird in so genannten RSS-Feeds oder Nachrichten versendet. RSS-Feeds sind textbasierte Informationen, die in jeweils verschiedenen RSS-Versionen standardisiert worden sind. Dabei ist ein RSS-Feed technisch gesehen nichts anderes als eine XML-Datei mit einem definierten Schema.
Eine Nachricht besteht in der Regel aus einem Titel, einem kurzen Text sowie einem Link, der weiterführende Informationen zu der Nachricht enthält.
Einsatzgebiete für RSS-Feeds
Seit einigen Jahren ist es immer populärer geworden, auf Webseiten so genannte RSS-Feeds anzubieten. Mit Sicherheit werden Sie schon einmal Verweise zu RSS-Feeds auf einer Webseite gesehen haben.
RSS wird allgemein als eine der ersten Anwendungen bewertet, die für ein so genanntes semantisches Web stehen. In einem semantischen Web sollen Inhalte automatisiert von Maschinen eingelesen und weiterverarbeitet werden können.
Wie findet man einen RSS-Feed
Wie so oft, ist auch bei dieser Fragestellung Ihre präferierte Suchmaschine im Internet die erste Anlaufstelle. Google findet alleine mit den Suchbegriffen ms access rss ca. 145.000.000 Einträge. Wenn Sie nach der Suche auf den Link zu einer Webseite klicken, werden Sie in den meisten Fällen zu einer – für Menschen lesbaren – Seite mit Zusatzinformationen geleitet. Auf dieser Seite sollten Sie dann nach einer der folgenden Kennzeichnungen Ausschau halten:
Kennzeichnungen für RSS-Feeds
Um dem Anwender einen möglichst einfachen und schnellen Zugang zu einem RSS-Feed zu ermöglichen, haben sich die Logos auf Webseiten aus Tab. 1 durchgesetzt.
Logo |
Beschreibung |
RSS-Feed-Logo |
|
XML-Feed-Logo |
|
Neues RSS-Logo |
Tab. 1: Logos zur Kennzeichnung von RSS-Feeds
Das neue RSS Logo wurde ursprünglich von den Entwicklern des Webbrowsers Firefox entwickelt. Mittlerweile haben sowohl die Unternehmen Opera als auch Microsoft das Logo übernommen und werden es auch in die neuesten Generationen der Webbrowser integrieren.
Aufbau einer RSS-Datei
Seit dem Start der ersten RSS-Feeds im Juni 2000 gibt es bis heute mehrere Versionen des RSS-Formats.
Bild 1: Beispiel einer RSS-Feed-Datei
Jede neue Version wurde so überarbeitet, dass sowohl neue Pflicht- als auch optionale Elemente Einzug in die Spezifikation erhielten. Die gängigen Versionen, die Sie bei näherer Beschäftigung mit dem Thema RSS im Internet finden werden, sind die RSS-Versionen 0.9x, 1.0 und 2.0.
Bild 1 zeigt einen Auszug aus einem Feed des Haufe Verlags. Dieser stellt exemplarisch die mögliche Struktur eines RSS-Feeds Version 0.91 dar.
Jede RSS-Datei ist eine gültige XML-Datei gemäß der XML-Spezifikation 1.0. Die in der Datei enthaltenen Zeichen werden in der Regel mit dem Code UTF-8 codiert.
Die RSS-Datei beginnt mit dem Root-Knoten <rss>. Dieser Knoten muss mit einem Attribut Version ergänzt werden, der die verwendete RSS-Spezifikation beschreibt.
Als nächster Knoten folgt ein <channel>-Knoten, der die „Kopfdaten“ des Feeds beinhaltet. In Abhängigkeit der RSS-Spezifikation folgen nun einige Knoten mit Informationen wie etwa <titel>, <link> und einer kurzen Beschreibung des Feeds im Knoten <description>. Details zur RSS-Spezifikation können Sie unter anderem dem Link am Ende dieses Beitrags entnehmen.
Der Image-Knoten verweist auf ein Icon oder Logo zum Feed und ist optional. Im Rahmen der Implementierung des Access-Feed-Readers werden Sie eine Methode kennen lernen, mit der Sie die optionalen Attribute sicher abfragen und verwenden können.
Nun folgt eine immer wiederkehrende Liste von Knoten des Typs Item. Jedes Item innerhalb einer Feed-Datei ist identisch aufgebaut.
Hinweis
Bitte beachten Sie, dass es für die Items ebenfalls eine Vielzahl optionaler Attribute gibt, die von Feed zu Feed sehr unterschiedlich definiert sein können.
Ein Item besteht im Wesentlichen aus den Knoten <title>, <link> und <description>.
Einige Anbieter von RSS-Feeds beschränken sich bei den Items auf die Angabe eines kurzen Titels und eines Links zur eigenen Homepage. Dieses Verfahren ist häufig bei Presseagenturen oder TV-Sendern zu beobachten, die damit den Anwender zum Abruf des kompletten Nachrichtentextes auf die Webseite des Feed-Anbieters weiterleiten können. Wenn der Anwender den Link in seinem RSS-Feed-Reader anklickt, wird er im Normalfall direkt zum relevanten und vollständigen Text des Items weitergeleitet.
Alternativen
In der noch jungen Geschichte des RSS-Formats hat es hinter den Kulissen schon seit der ersten Version eine rege Diskussion um die notwendigen Attribute und Knoten zur Aufbereitung der Informationen gegeben.
Einige Stimmen sprechen sich dafür aus, RSS möglichst schlank und einfach zu halten. Andere Parteien möchten die sprichwörtliche eierlegende Wollmilchsau erstellen und definieren ein universelles und riesiges Set von zulässigen Attributen.
Ein sehr umfangreiches Format ist das Format Atom, welches maßgeblich in der Version 1.0 eingesetzt wird. Atom ist ebenso wie RSS ein Internetstandard und versucht, die Vorteile der einzelnen RSS-Standards in einem neuen Format zu vereinen. Atom fordert beispielsweise eine inhaltliche Kennzeichnung von Einträgen, die bei RSS oft schmerzlich vermisst wird.
So kann etwa in RSS der reine Text einer Nachricht oder auch formatiertes HTML-Markup in einem Knoten gespeichert werden. Die verarbeitende Anwendung bekommt keinen Hinweis auf den Inhalt und muss sich selber um eine Interpretation der Daten kümmern. Atom ermöglicht in diesem Fall eine Kennzeichnung als type = text oder type = html.
Praxis-Tipp
Obwohl im folgenden Quellcode zu diesem Beitrag nur das RSS-Format eingelesen wird, können Sie die Lösung jederzeit selber um das Atom-Format erweitern.
Microsoft wird mit dem kommenden Internet Explorer 7 das erste Mal direkte Unterstützung von RSS in der Oberfläche einer Anwendung anbieten und auch ein API zur Verwendung von RSS in eigenen Applikationen mitliefern. Damit Sie nicht bis zur Freigabe des neuen IE7 warten müssen, zeigt Ihnen dieser Artikel einen relativ einfachen Weg, um Ihre Anwendung mit RSS-Feeds anzureichern.
Die nachfolgend beschriebene Musterlösung ermöglicht die Eingabe einer URL, von der ein RSS-Feed geladen werden soll. Access baut nach der Eingabe eine Verbindung über das http-Protokoll (Port 80) mit dem in der URL angegebenen Webserver auf und liest die RSS-Daten ein.
Nachdem die Daten lokal auf dem Client vorliegen, werden relevante Angaben zum Channel extrahiert und der neue Channel in der Tabelle Channels angelegt.
Im letzten Schritt werden in dieser Musterlösung alle bereits definierten Channels durchlaufen und auf neue Beiträge hin überprüft. Diese Beiträge werden in der Tabelle Items abgelegt.
Das Datenmodell für die Anwendung besteht nur aus den beiden Tabellen Channels und Items.
Tabelle Channels
Legen Sie in Access eine neue Tabelle Channels mit Feldern aus Tab. 2 an.
Feldname |
Datentyp |
ChannelID |
AutoWert, PK |
Version |
Text [10] |
Title |
Text [255] |
Link |
Hyperlink |
Description |
Memo |
Language |
Text [10] |
Tab. 2: Struktur der Tabelle Channels
Tabelle Items
Die zweite relevante Tabelle benennen Sie mit dem Namen Items und definieren die Felder aus Tab. 3. Die beiden Tabellen werden über eine 1:n-Beziehung verbunden, sodass ein Channel n Items enthalten kann (siehe Bild 2).
Die Oberfläche der Musterlösung besteht aus einem Hauptformular, in das ein Unterformular eingebettet wird (siehe Bild 3).
Feldname |
Datentyp |
ItemID |
AutoWert, PK |
ChannelID |
Zahl [LongInteger] |
Title |
Text [255] |
Description |
Memo |
Link |
Hyperlink |
PubDate |
Text [50] |
Tab. 3: Struktur der Tabelle Items
Bild 2: Beziehung zwischen Channels und Items
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
den kompletten Artikel im PDF-Format mit Beispieldatenbank
diesen und alle anderen Artikel mit dem Jahresabo