XML Datei dynamisch erstellen mit PHP
Die Programmiersprache PHP wird weitläufig nur in Zusammenhang mit HTML-Code verwendet. Was aber vielen nicht bekannt ist: Man gibt mit PHP lediglich Text aus und HTML ist dabei nur ein speziell strukturierter Text. XML-Dateien bestehen ebefalls aus speziell strukturiertem Text den man mit PHP generieren kann. Die dynamisch erstellte Datei kann dann zum Beispiel Texte oder Bildpfade für eine Flash-Datei enthalten. In unserem Beispiel werden wir eine XML-Datei generieren, die einen Bildpfad und einen Titel enthält. Die fertige PHP Datei gibt's natürlich unten als Download.Als erstes geben wir mit PHP einen header aus, damit der Browser (bzw. die Flash Datei) weiß, dass es sich um eine XML-Datei (im UTF-8 Zeichensatz) handelt, obwohl eigentlich eine PHP-Datei aufgerufen wird.
<?php
header("Content-type: text/xml; charset=utf-8");
Als nächstes gebe ich als Text eine Zeile aus, die explizit bezeichnet, welche XML-Version wir verwenden wollen und welchen Zeichensatz diese beinhaltet. Das zweite echo erzeugt lediglich einen Zeilenumbruch im Quelltext des XML-Codes.
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo "\n";
Im nächsten Schritt definiere ich ein mehrdimensionales Array, welches dann in einer foreach-Schleife durchlaufen werden kann. Diese Daten könnten zum Beispiel auch aus einer Datenbank-Tabelle stammen.
$daten = array(
0 => array('bildpfad' => 'urlaub.jpg', 'titel' => 'Urlaub'),
1 => array('bildpfad' => 'arbeit.jpg', 'titel' => 'Arbeit')
);
Nun werden Schritt für Schritt die XML-Tags ausgegeben. Der <bilder>-Tag umfasst alles Andere, ähnlich dem <body>-Tag in einer üblichen HTML-Datei. Für jedes Bild wird darin ein separates <bild>-Tag erstellt. Die Tagnamen in einer XML-Datei sind frei wählbar.
echo '<bilder>';
foreach ($daten as $zeile) {
echo "<bild>";
echo "<pfad>" . htmlspecialchars($zeile["bildpfad"]) . "</pfad>";
echo "<titel>" . htmlspecialchars($zeile["titel"]) . "</titel>";
echo "</bild>";
}
echo '</bilder>';
Somit ist die XML-Datei fertig und kann zum Beispiel direkt im Flash eingebunden werden. Auch wenn im Endeffekt die bilder-xml.php Datei aufgerufen wird, gibt sich diese durch den anfänglichen header()-Aufruf als eine Waschechte XML Datei aus.
Downloads
XML mit PHP generieren (.zip, 1 KiB) Beinhaltet folgende Dateien (UTF-8 Zeichensatz):
- bilder-xml.php: Die PHP-Datei zum generieren der XML-Datei.
- ergebnis.xml: Eine Ergebnis-Beispieldatei.
Markus