XML RSS Feed mit PHP
» Mit den DOM-Funktionen (Document Object Model) von PHP hat man alle wichtigen Werkzeuge um valide RSS Feeds zu erstellen und zu bearbeiten. «
Das DOM (Document Object Model) wurde vom W3C (world wide web consortium) spezifiziert und herausgegeben. In der Programmiersprache PHP wurden einige spezielle Funktionen und Befehle implementiert, die das DOM unterstützen und somit die Bearbeitung und Erstellung von DOM-basierenden Dokumenten wie z.B. RSS (XML) stark vereinfachen.
Bevor wir mit den praktischen Beispielen bezüglich der XML RSS Manipulation starten, einige Hintergrundinformationen zu DOM und XML für ein besseres allgemeines Verständnis.
Eine typische RSS (XML) Datei:
Man erkennt sofort die hierarische Struktur, die Basis eines jeden XML Dokumentes ist. So eine Struktur wird über das DOM spezifiziert und beschrieben. Ein RSS Feed würde in einer DOM-Struktur wie folgt aussehen:

An Hand der Grafik kann man Abhängigkeiten der einzelnen Objekte sehen und gleichzeitig das Grundprinzip eines DOM. Die Struktur ähnelt der eines "Familienstammbaums" mit seinen ganzen Verwandtschaftsbeziehungen und genau darum geht es auch bei dem Document Object Model.
Das DOM arbeitet mit "Verwandtschaftsverhältnissen" der einzelnen Objekte daher werden bei der Beschreibung auch solche Begriffe wie 'parents' (Eltern), 'childs' (Kinder) oder auch 'siblings' (Geschwister) verwendet.
In der Grafik sehen wir z.B. das der 'parent' (Elternteil) <channel> zwei 'child'-Objekte (Kinder) hat und zwar <title> und <item>. Diese beiden 'childs', die auf der gleichen Stufe stehen und ein direktes Elternteil (parent (<channel>)) haben, sind somit auch gleichzeitig Geschwister (siblings).
Wer sich diese Verhältnisse und Begriffe verinnerlicht, wird es bei der späteren Programmierung weitaus einfacher haben, da sich einige Befehle direkt auf diese Ausdrücke beziehen. Um in PHP z.B. ein neues 'child'-Objekt hinzuzufügen, wird der Befehl verwendet:
Die Verknüpfungspunkte (z.B. der Punkt der von <channel> auf die beiden 'child'-Objekte verzweigt) nennt man 'node' (Knoten).
Bevor wir mit den praktischen Beispielen bezüglich der XML RSS Manipulation starten, einige Hintergrundinformationen zu DOM und XML für ein besseres allgemeines Verständnis.
Eine typische RSS (XML) Datei:
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>Name des RSS Feed</title>
<description>Feed Beschreibung</description>
<language>de</language>
<link>http://xml-rss.de</link>
<lastBuildDate>Sat, 1 Jan 2000 00:00:00 GMT</lastBuildDate>
<item>
<title>Titel der Nachricht</title>
<description>Die Nachricht an sich</description>
<link>http://xml-rss.de/link-zur-nachricht.htm</link>
<pubDate>Sat, 1. Jan 2000 00:00:00 GMT</pubDate>
<guid>01012000-000000</guid>
</item>
</channel>
</rss>
<rss version="2.0">
<channel>
<title>Name des RSS Feed</title>
<description>Feed Beschreibung</description>
<language>de</language>
<link>http://xml-rss.de</link>
<lastBuildDate>Sat, 1 Jan 2000 00:00:00 GMT</lastBuildDate>
<item>
<title>Titel der Nachricht</title>
<description>Die Nachricht an sich</description>
<link>http://xml-rss.de/link-zur-nachricht.htm</link>
<pubDate>Sat, 1. Jan 2000 00:00:00 GMT</pubDate>
<guid>01012000-000000</guid>
</item>
</channel>
</rss>
Man erkennt sofort die hierarische Struktur, die Basis eines jeden XML Dokumentes ist. So eine Struktur wird über das DOM spezifiziert und beschrieben. Ein RSS Feed würde in einer DOM-Struktur wie folgt aussehen:

Das DOM arbeitet mit "Verwandtschaftsverhältnissen" der einzelnen Objekte daher werden bei der Beschreibung auch solche Begriffe wie 'parents' (Eltern), 'childs' (Kinder) oder auch 'siblings' (Geschwister) verwendet.
In der Grafik sehen wir z.B. das der 'parent' (Elternteil) <channel> zwei 'child'-Objekte (Kinder) hat und zwar <title> und <item>. Diese beiden 'childs', die auf der gleichen Stufe stehen und ein direktes Elternteil (parent (<channel>)) haben, sind somit auch gleichzeitig Geschwister (siblings).
Wer sich diese Verhältnisse und Begriffe verinnerlicht, wird es bei der späteren Programmierung weitaus einfacher haben, da sich einige Befehle direkt auf diese Ausdrücke beziehen. Um in PHP z.B. ein neues 'child'-Objekt hinzuzufügen, wird der Befehl verwendet:
$parent->appendChild();
Die Verknüpfungspunkte (z.B. der Punkt der von <channel> auf die beiden 'child'-Objekte verzweigt) nennt man 'node' (Knoten).















