Andreas Korthaus: /PHP5 - kleines News-CMS mit simplexml

Beitrag lesen

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/