Hallo!
Bin gerade mal dabei mit der simplexml Extension von PHP5 "zu spielen". Ich versuche gerade mal, ein möglichst einfaches News-CMs zu schrieben. Die News sollen in einer XML-Datei gespeichert sein, es soll die Möglichkeit geben, die Titel der letzten 5 News auszugeben, und die gesamten News entweder auf jeweils einer Seite, oder aller auf eine Seite (mit Pager...).
Ich hab mir mal folgende XML-Struktur überlegt:
<?xml version="1.0" encoding="ISO-8859-1"?>
<news>
<item id="32" public="1">
<title>news #32</title>
<description>Newstext...</description>
<timestamp>1234567890</timestamp>
<author>Andreas Korthaus</author>
</item>
<item id="31" public="0">
<title>news #31</title>
<description>Newstext....</description>
<timestamp>1234567890</timestamp>
<author>Andreas Korthaus</author>
</item>
</news>
Per PHP (5) kann ich das Dank simplexml jetzt wie folgt einlesen:
<?php
$newsfile = 'news.xml';
if (!file_exists($newsfile)) {
exit("Fehler: $newsfile konnte nicht geoeffnet werden");
}
else {
$xml = simplexml_load_file($newsfile);
foreach ($xml->item as $news) {
echo $news->title."($news[id])\n";
}
}
?>
Die Sache hat nur einen Haken: Ich kann zwar dem $xml Objekt weitere Item-Objekte hinzufügen, aber ich wüsste jetzt nicht, wie ich die sauber am Anfang einfüge, so dass die neusten News immer oben stehen. Was wäre hier ein effizienter Weg, die 5 neusten News abzufragen, oder eben - wie würde man elegant neue News _vor_ den anderen News in die XML-Datei einbauen?
Nachdem ich das Objekt manipuliert habe, kann ich es wieder recht einfach in die Datei schreiben:
<?php
$xml->asXML($newsfile);
?>
Hat jemand von Euch ne Idee wie man das elegant löst? Performance ist hier weniger wichtig, weil die XML-Datei in absehbarer Zeit keine nennenswerte Größe annehmen wird.
Viele Grüße
Andreas
PS: wenn die XML-Struktur schwachsinnig/ausbaufähig ist - schont mich nicht ;-)
SELFHTML Linkverzeichnis: http://aktuell.de.selfhtml.org/links/