![]() |
[PHP][XML] - Liste
Hi,
ich schreibe gerade an einem Dynamischen Galerie-Modul. so soll die Galerie über eine PHP-Datei in einer XML Datei gespeichert werden. Soll heißen, das script geht z.B. den Hauptordner der Galerie durch und zählt die Bilder, und speichert die jeweiligen Namen in einer Liste in einem XML-Dokument. Nun ist meine frage, ob man Listen in XML-Dateien speichern kann, da es vorkommen kann, dass bilder gelöscht werden, somit müsste man, wenn man die zeilen numeriert, den kompletten rest umschreiben. Daher würde ich eigentlich gerne eine Liste haben, so dass ich einfach den inhalt von zeile x auslesen kann. Also ähnlich nem memo: liste.lines[2] Also aussehen müsste es in etwa so:
XML-Code:
natürlich könnte ich auch folgendes machen:
<?xml version="1.0" ?>
<anzahl>3</anzahl> ... <liste> hallo.jpg blub.jpg tut.jpg </liste>
XML-Code:
und dann daraus ein Array erstellen, aber das dürfte doch bei vielen bildern recht ineffizient werden, wenn ich dann ein paar elemente da rauslöschen muss, oder?
<liste>hallo.jpg;blub.jpg;tut.jpg</liste>
hab bisher noch nit mit xml gearbeitet und php fang ich eigentlich auch erst an, aber da ich mein Projekt schaffen will, werd ich mich bemühen müssen es schnell lernen |
Re: [PHP][XML] - Liste
Zitat:
XML-Code:
Das halte ich für sinnvoller, und das kann man auch mit PHP relativ problemlos auslesen.
<liste>
<bild>hallo.jpg</bild> <bild>blub.jpg</bild> <bild>tut.jpg</bild> </liste> |
Re: [PHP][XML] - Liste
Thx schonmal, das ist ja in dem Sinne einer Liste, wie ich es mir vorgestellt hab gleich.
ich wusste nur nicht, dass ich einen Tag pro section mehrfach verwenden kann... nur, wie les ich dann die einzelnen Zeilen aus? ich kann ja nicht wie bei einzeln vorkommenden Tags über den Namen abfragen. wie spreche ich da z.b. die 2. bildzeile an? |
Re: [PHP][XML] - Liste
Das kommt auf den XML-Parser an, den du verwenden willst. Bei CSharp gäbe es bspw. die recht einfache Möglichkeit:
Code:
zum Anzeigen der einzelnen Knoten. Und wenn man vorher die Anzahl der Elemente prüft, kann man natürlich auch per Index auf ein bestimmtes Bild zugreifen:
XmlNodeList bilder = xmldoc.SelectNodes("/liste/bild");
foreach (XmlNode bild in bilder) { Console.WriteLine(bild.OuterXml); }
Code:
Wenn du bei PHP auch einen XML-DOM-Parser nimmst, dann kannst du ähnlich wie bei CSharp vorgehen. Bei SAX solltest du die XML-Datei in ein Array parsen lassen, etwa:
XmlNode bild = bilder[1];
Console.WriteLine(bild.OuterXml);
Code:
Das ist nur ein Beispielcode, ohne irgendwelche Absicherungen, usw.
if ($xmlString = file("./bilder.xml.txt"))
{ $xmlString = implode("", $xmlString); if (!empty($xmlString)) { $xmldoc = xml_parser_create(); xml_parse_into_struct($xmldoc, $xmlString, $vals, $idx); xml_parser_free($xmldoc); $nodeLevel = 0; for ($i = 0; $i < count($vals); $i++) { if ($vals[$i]["tag"] == "LISTE" && $vals[$i]["type"] == "open") $nodeLevel = $vals[$i]["level"] + 1; if ($vals[$i]["tag"] == "BILD" && $nodeLevel == $vals[$i]["level"]) { $tmp[] = $vals[$i]["value"]; } } } echo "alle Bilder:\n============\n"; foreach ($tmp as $value) echo "$value\n"; echo "\n\nBild Nr. 2:\n===========\n"; echo "$tmp[1]"; } |
Re: [PHP][XML] - Liste
Auf dem Webspace läuft PHP 5, da ist ja eine XML-Lib drin haben.
Was würdet ihr mir denn empfehlen für den einsatz? Ich benötige es wie gesagt nur, zum abspeichern von ein paar informationen sowie der liste. Zum lesen müsste ich die informationen in Variablen und die Liste in ein Array lesen. Mehr brauche ich, soweit ich das jetzt sehe nicht. |
Re: [PHP][XML] - Liste
Fuer sowas einfaches wuerde ich den SimpleXML-parser von PHP5 nehmen. Der ist sehr schnell und super einfach zu bedienen:
![]() in deinem Fall:
Code:
Das wurde dir die Liste einfach ausgeben. Kannst du dir dann ja anpassen...
$xml =simplexml_load_string(string) oder eben simplexml_load_file(dateiname);
foreach($xml->liste->bild as $bild) print($bild."\n"); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz