-
PHP - Teil 39 - XML (Teil 4): Eigene RSS-Feeds anbieten
13.01.2012 in PHP von daniel_koch
- Zum Downloadmanager hinzufügen
- PDF-Datei herunterladen
- Arbeitsmaterialien herunterladen
- Video
- Kommentare ansehen (0)
- Kategorie: PHP
- Erstellt mit Programmversion: PHP 5/6
- Kompatibel ab Programmversion: PHP 5
- Dateigröße (PDF): 1.3 MB
- Dateigröße (Arbeitsmaterial): 3 KB
- Bisherige Zugriffe: 72
Zum Downloadmanager hinzufügen PDF-Datei herunterladen (1.3 MB) Arbeitsmaterialien herunterladen (3 KB) Zugehöriges Video-Training ansehen
Tipp: Dieser Inhalt befindet sich auch auf der:
Lieber Gast …
… die Inhalte von PSD-Tutorials.de stehen nur registrierten Mitgliedern zur Verfügung. Damit wollen wir den Communitygedanken weiterführen. Als Mitglied trägst du - wenn auch nur im Kleinen - zum Puls der Community bei. Und nur so ist es möglich, weiterhin hochwertige Inhalte für alle bereitzustellen.
Vorteile der kostenlosen Mitgliedschaft
Mit der kostenlosen und schnell erledigten Registrierung erhältst du viele nachhaltige Vorteile, die wir dir hier in aller Kürze aufzeigen möchten:
- PSD steht für professionelles Know-how in den Bereichen Bildbearbeitung mit Photoshop, Fotografie, Webentwicklung, Layout- und Vektorbearbeitung, 3D-Bearbeitung mit Cinema 4D und Co.
- Über 2200 Tutorials mit druckbarer PDF-Datei und teilweise den zugehörigen Arbeitsmaterialien
- Mehr als 500 Video-Trainings als Stream zur Direktanzeige und zum Download
- Abruf von über 1000 Downloads zu Photoshop-Presets, 3D-Modellen, Grußkarten, Texturen & Co
- Zugriff auf ein sehr aktives Forum mit Antworten im Minutentakt
- Deine Daten sind sicher. Sie werden nicht weitergegeben! Die Mitgliedschaft kann jederzeit und ohne Aufwand wieder gelöscht werden.
Reinschnuppern als Gast
Niemand kauft gerne die Katze im Sack, auch wenn sie kostenlos ist. Wir haben eine Handvoll Tutorials und Video-Trainings ausgesucht, die du auch als Gast ohne Registrierung ansehen kannst. Gefallen sie dir, stehen dir nach der Registrierung alle oben genannten Inhalte zur Verfügung.
- Download: Sepia-Vintage-Effekt-Aktion
- Download: Spiegelungen 2
- Download: Vektor-Logo (Eidechse)
- Tutorial: Linien zum Glühen bringen
- Tutorial: Ballons aus einer Schublade
- Tutorial: Neue Pinsel erstellen leicht gemacht
- Tutorial: Kommerzielle Fotografie 01: Berufswunsch Fotografie
- Videotraining: Die Programmoberfläche und der Arbeitsbereich von Adobe InDesign
- Videotraining: Lichtscheinkontureneffekt mit Animation
- Videotraining: CorelDRAW X6 Grundlagen - Hilfsmittel Freihand, 2-Punkt-Linie, Bezier, B-Spline, Polylinie, Stift, 3-Punkt-Kurve
- Videotraining: CorelDRAW X6 Grundlagen: Hilfsmittel Form - Heranziehen, Zurückweisen
Das Punktesystem
Einen winzigen Haken gibt es noch. Es gibt bei uns ein Punktesystem. Damit soll erreicht werden, dass Mitglieder sich aktiv in unserer Community beteiligen. Sobald du im Forum schreibst oder Tutorials kommentierst, bekommst du Punkte. Mit diesen Punkten kannst du wiederum Tutorials anschauen oder Downloads herunterladen. Mit der Registrierung bei PSD-Tutorials.de erhältst du ein Startguthaben von 100 Punkten, womit du schon ein gutes Stück weit kommst.
PHP-Workshop-DVD - Basics & Tricks
- 12 Stunden Video-Training, 480 PDF-Seiten Tutorials
- Basics, Formulare, Datenbanken, XML und Co.
- 4 Stunden Bonusmaterial zum Webdesign (mit Photoshop
Kommentare
Tutorial empfehlen
Anleitung (Bilder + Extras werden nur für Mitglieder eingeblendet)
Ziel dieses Tutorials ist es, via PHP einen eigenen RSS-Feed zu erstellen. Als Basis dient dabei die DOM-Erweiterung, die standardmäßig bei PHP aktiviert ist. Auch das lässt sich wieder über
phpinfo() ermitteln.
Zunächst muss der Kopfbereich des RSS-Feeds definiert werden. Die Syntax sieht folgendermaßen aus.
$xml = new DOMDocument('1.0', 'UTF-8');
$xml->formatOutput = true;
$roo = $xml->createElement('rss');
$roo->setAttribute('version', '2.0');
$xml->appendChild($roo);
$cha = $xml->createElement('channel');
$roo->appendChild($cha);
Hier lohnt in jedem Fall ein Blick auf die einzelnen Elemente.
$xml = new DOMDocument('1.0', 'UTF-8');
Dadurch werden in die XML-Deklaration, die verwendete XML-Version und die gewünschte Zeichenkodierung eingefügt. Im Ergebnisquellcode führt das zu folgender Ausgabe:
<?xml version="1.0" encoding="UTF-8"?>
Damit die Ausgabe "geordnet" erfolgt, sollte
formatOutput auf true gesetzt werden. Dadurch wird die XML-Syntax sortiert und eingerückt im Ergebnisdokument angezeigt. Verzichtet man darauf, wird der Quellcode unsortiert und in einer Zeile ausgegeben. Lesbar ist der dann nur schwer.$xml->formatOutput = true;
Weiter geht es mit der Definition des ersten Elements des XML-Dokuments. Bei diesem ersten Element handelt es sich um
rss. Diesem Element wird das Attribut version mit dem Wert 2.0 zugewiesen. Letztendlich müsst ihr hier die RSS-Version angeben, die ihr im Feed verwenden wollt. (Normalerweise liegt man derzeit mit 2.0 richtig).
$roo = $xml->createElement('rss');
$roo->setAttribute('version', '2.0');
Das neu erstellte
rss-Element wird über appendChild() in das Dokument eingefügt.$xml->appendChild($roo);
Laut RSS-Spezifikation muss als Kindelement von
rss das Element channel eingefügt werden.
$cha = $xml->createElement('channel');
$roo->appendChild($cha);
Damit steht das Grundgerüst des Feeds. Im nächsten Schritt werden einige allgemeine Metadaten über den Feed angegeben. Dazu gehören der Feed-Titel, die Beschreibung, die verwendete Sprache, der Feed-URL und das Feed-Erstelldatum.
$hea = $xml->createElement('title',utf8_encode('medienwerke.de - Daniel Koch'));
$cha->appendChild($hea);
$hea = $xml->createElement('description',utf8_encode('CMS-Support,
Bücher, Videotrainings ...'));
$cha->appendChild($hea);
$hea = $xml->createElement('language',utf8_encode('de'));
$cha->appendChild($hea);
$hea = $xml->createElement('link',htmlentities('http://www.medienwerke.de/feed/'));
$cha->appendChild($hea);
$hea = $xml->createElement('lastBuildDate',utf8_encode
(date("Thu, 13 Oct 2011 11:29:07 +0000").'GMT'));
$cha->appendChild($hea);
Dabei dürften die einzelnen Elemente selbsterklärend sein. Eine genauere Betrachtung verdient aber sicherlich folgende Zeile:
$hea = $xml->createElement('link',htmlentities('http://www.medienwerke.de/feed/'));
Hierüber gibt man die Feed-Adresse an. Interessant ist dort
htmlentities(). Darüber werden mögliche Probleme mit Sonderzeichen verhindert, die im URL des Feeds auftauchen könnten.Der Feed muss nun natürlich noch als XML-Datei abgespeichert werden.
$xml->save('rss.xml');

Auch wenn diese Ansicht noch nicht sonderlich spektakulär erscheint, handelt es sich doch um einen echten RSS-Feed.
<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0"> <channel> <title>medienwerke.de - Daniel Koch</title> <description>CMS-Support, Bücher, Videotrainings ...</description> <language>de</language> <link>http://www.medienwerke.de/feed/</link> <lastBuildDate>CEST02000000, 13 +02002011-10-20T14:50:23+02:0031 2011 11:29:07 +0000GMT</lastBuildDate> </channel> </rss>
<item> <title>XML Schema: Die Nachteile von DTDs</title> <description>XML Schema ist ein neuer Ansatz, um XML-Dokumenttypen ohne Einsatz einer DTD zu beschreiben. Dabei stellt sich zunächst die Frage, warum es eigentlich eines solch neuen Ansatzes bedarf. Denn schließlich wurde im vorherigen Kapitel gezeigt, dass sich Dokumenttypen durchaus mit DTDs definieren lassen. Es gibt also offensichtlich Defizite, die beim Einsatz von DTDs zu Tage [...]</description> <link>http://www.medienwerke.de/2011/10/10/xml-schema-die-nachteile-von-dtds/</link> <pubDate>Mon, 10 Oct 2011 18:27:12 +0000</pubDate> <guid>http://www.medienwerke.de/?p=831</guid> </item> <item> ... </item> <item> ... </item>
Die eigentlichen Inhalte des Feeds werden jeweils in einzelnen
item-Elementen hinterlegt. Diese Elemente sind wiederum Unterelemente von channel. Erstellt werden sie über die bekannte createElement()-Funktion.
$itm = $xml->createElement('item');
$cha->appendChild($itm);
Innerhalb der einzelnen
item-Elemente werden dann die eigentlichen Feed-Inhalte definiert. Dabei setzt sich ein Inhalt immer mindestens aus folgenden Elementen zusammen:•
title – Der Titel des Beitrags.•
description – Das ist der eigentliche Beitrag, also der Inhalt.•
link – Der Link auf den Beitrag. Auch hier sollte wieder das bereits vorgestellte htmlentities() verwendet werden. Dabei zeigt dieser Link auf die Stelle der Webseite, auf der der vollständige Beitrag steht.•
guid – Das ist die eindeutige Identifikationsnummer des Beitrags. Üblicherweise verwendet man hier einen Permalink auf den Beitrag. So können die Aggregatoren den Beitrag eindeutig identifizieren. (Handelt es sich tatsächlich um einen Permalink, sollte dem Element noch permalink="true" als Attribut/Wert zugewiesen werden).•
pubDate – Damit die Leser wissen, wann die jeweiligen Beiträge geschrieben wurden, gibt man hierüber das Erstelldatum an. Dabei sollte die Datumsangabe in der Form Mon, 24. Okt. 2011 13:15:34 EST geschrieben werden.Weitere Angaben sind zunächst einmal nicht nötig. Insgesamt sieht die Definition eines Beitrags innerhalb eines RSS-Feeds also folgendermaßen aus:
$itm = $xml->createElement('item');
$cha->appendChild($itm);
$dat = $xml->createElement('title',utf8_encode('XML Schema: Die
Nachteile von DTDs'));
$itm->appendChild($dat);
$dat = $xml->createElement('description',utf8_encode('XML Schema
ist ein neuer Ansatz, um XML-Dokumenttypen ohne Einsatz
einer DTD zu beschreiben. Dabei stellt sich zunächst die Frage,
warum es eigentlich eines solch neuen Ansatzes bedarf.
Denn schließlich wurde im vorherigen Kapitel gezeigt, dass sich
Dokumenttypen durchaus mit DTDs definieren lassen. Es gibt
also offensichtlich Defizite, die beim Einsatz von DTDs zu Tage [...]'));
$itm->appendChild($dat);
$dat = $xml->createElement('link',htmlentities('http://www.medienwerke.de/2011/10/10/
xml-schema-die-nachteile-von-dtds/'));
$itm->appendChild($dat);
$dat = $xml->createElement('pubDate',utf8_encode('Mon, 10 Oct 2011 18:27:12 +0000'));
$itm->appendChild($dat);
$dat = $xml->createElement('guid',htmlentities('http://www.medienwerke.de/?p=831'));
$itm->appendChild($dat);
Ihr könnt beliebig viele
item-Elemente einfügen. Insgesamt könnte die Syntax folgendermaßen aussehen:
<?php
$xml = new DOMDocument('1.0', 'UTF-8');
$xml->formatOutput = true;
$roo = $xml->createElement('rss');
$roo->setAttribute('version', '2.0');
$xml->appendChild($roo);
$cha = $xml->createElement('channel');
$roo->appendChild($cha);
$hea = $xml->createElement('title',utf8_encode('medienwerkede Daniel Koch'));
$cha->appendChild($hea);
$hea = $xml->createElement('description',utf8_encode('CMS-Support,
Bücher, Videotrainings ...'));
$cha->appendChild($hea);
$hea = $xml->createElement('language',utf8_encode('de'));
$cha->appendChild($hea);
$hea = $xml->createElement('link',htmlentities
('http://www.medienwerke.de/feed/'));
$cha->appendChild($hea);
$hea = $xml->createElement('lastBuildDate',utf8_encode(date
("Thu, 13 Oct 2011 11:29:07 +0000").'GMT'));
$cha->appendChild($hea);
$itm = $xml->createElement('item');
$cha->appendChild($itm);
$dat = $xml->createElement('title',utf8_encode('XML Schema: Die Nachteile von DTDs'));
$itm->appendChild($dat);
$dat = $xml->createElement('description',utf8_encode('XML Schema ist ein
neuer Ansatz, um XML-Dokumenttypen ohne Einsatz einer DTD zu beschreiben.
Dabei stellt sich zunächst die Frage, warum es eigentlich eines solch
neuen Ansatzes bedarf. Denn schließlich wurde im vorherigen Kapitel gezeigt,
dass sich Dokumenttypen durchaus mit DTDs definieren lassen. Es gibt also
offensichtlich Defizite, die beim Einsatz von DTDs zu Tage [...]'));
$itm->appendChild($dat);
$dat = $xml->createElement('link',htmlentities('http://www.medienwerke.de/2011/
10/10/xml-schema-die-nachteile-von-dtds/'));
$itm->appendChild($dat);
$dat = $xml->createElement('pubDate',utf8_encode('Mon, 10 Oct 2011 18:27:12 +0000'));
$itm->appendChild($dat);
$dat = $xml->createElement('guid',htmlentities('http://www.medienwerke.de/?p=831'));
$itm->appendChild($dat);
$xml->save('feed.xml');
?>
<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0"> <channel> <title>medienwerke.de - Daniel Koch</title> <description>CMS-Support, Bücher, Videotrainings ...</description> <language>de</language> <link>http://www.medienwerke.de/feed/</link> <lastBuildDate>CEST02000000, 13 +02002011-10-20T14:50:23+02:0031 2011 11:29:07 +0000GMT</lastBuildDate> <item> <title>XML Schema: Die Nachteile von DTDs</title> <description>XML Schema ist ein neuer Ansatz, um XML-Dokumenttypen ohne Einsatz einer DTD zu beschreiben. Dabei stellt sich zunächst die Frage, warum es eigentlich eines solch neuen Ansatzes bedarf. Denn schließlich wurde im vorherigen Kapitel gezeigt, dass sich Dokumenttypen durchaus mit DTDs definieren lassen. Es gibt also offensichtlich Defizite, die beim Einsatz von DTDs zu Tage [...]</description> <link>http://www.medienwerke.de/2011/10/10/xml-schema-die-nachteile-von-dtds/</link> <pubDate>Mon, 10 Oct 2011 18:27:12 +0000</pubDate> <guid>http://www.medienwerke.de/?p=831</guid> </item> </channel> </rss>



Wenn ihr innerhalb eurer Webseite auf den RSS-Feed verweisen wollt, gibt es zwei Möglichkeiten. Zunächst einmal kann man natürlich einen Hyperlink auf die XML-Datei setzen.
<a href="feed.xml" title="medienwerke.de - RSS-Feed" rel="alternate" type="application/rss+xml">RSS-Feed abonnieren</a>
Alternativ dazu kann man auch innerhalb des
head-Bereichs der Seite ein link-Element einfügen.<link rel="alternate" type="application/rss+xml" title="News-Feed" href="http://www.medienwerke.de/feed">
Moderne Browser erkennen automatisch, dass es sich um ein Feed handelt und zeigen ein entsprechendes Symbol an, über das man den Feed abonnieren kann.
-
Reklame
-
-
- Fotobüchern
- Umrandung um Textfeld
- Kanten glätten bei meinem Bild oder Vektor?
- After Effects Ram-Vorschau - Problem mit Cache (aktualisert nicht)
- blender render stürzt ständig ab
- jQuery - Größe von einem Frameset ändern?
- [CS5] "Löschen-Mitteilung"
- Zerissenes Foto
- Biete Programmierung Ihres PSD-Designs
- Fehler beim Platzieren von Bildern
- Zeilenumbruch CS4
- Gestaltung eines Logos
- Kaufberatung Drucker
- Dynamische Auswahlliste: Name und ID übergeben
- Adobe Encore - Probleme Schaltflächen Unterbild
- 2 Fotos mit unterschiedlichem Schlagschatten in einer Datei
- Copyright-Frage - öffentliche Veranstaltung
- Photoshop auf Mini Lappi
- Link auf Anker - Firefox Problem
- Auftrag: Individuelle Flash-Gallerie
-
-
Aktuelles Commag
Anzeige
-
Anzeige


Social Media