AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP][XML] - Liste

Ein Thema von Thorben86 · begonnen am 24. Mär 2006 · letzter Beitrag vom 26. Mär 2006
Antwort Antwort
Thorben86

Registriert seit: 20. Nov 2003
Ort: Brühl
365 Beiträge
 
Delphi 2005 Personal
 
#1

[PHP][XML] - Liste

  Alt 24. Mär 2006, 19:19
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:
<?xml version="1.0" ?>
<anzahl>3</anzahl>
...
<liste>
hallo.jpg
blub.jpg
tut.jpg
</liste>
natürlich könnte ich auch folgendes machen:
<liste>hallo.jpg;blub.jpg;tut.jpg</liste> 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?

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
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#2

Re: [PHP][XML] - Liste

  Alt 24. Mär 2006, 19:34
Zitat von Thorben86:
natürlich könnte ich auch folgendes machen:
Oder du hältst dich gleich an die Idee, die hinter XML steht:
XML-Code:
<liste>
  <bild>hallo.jpg</bild>
  <bild>blub.jpg</bild>
  <bild>tut.jpg</bild>
</liste>
Das halte ich für sinnvoller, und das kann man auch mit PHP relativ problemlos auslesen.
  Mit Zitat antworten Zitat
Thorben86

Registriert seit: 20. Nov 2003
Ort: Brühl
365 Beiträge
 
Delphi 2005 Personal
 
#3

Re: [PHP][XML] - Liste

  Alt 24. Mär 2006, 19:54
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?
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#4

Re: [PHP][XML] - Liste

  Alt 25. Mär 2006, 09:04
Das kommt auf den XML-Parser an, den du verwenden willst. Bei CSharp gäbe es bspw. die recht einfache Möglichkeit:
Code:
XmlNodeList bilder = xmldoc.SelectNodes("/liste/bild");
foreach (XmlNode bild in bilder)
{
  Console.WriteLine(bild.OuterXml);
}
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:
Code:
XmlNode bild = bilder[1];
Console.WriteLine(bild.OuterXml);
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:
Code:
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]";
}
Das ist nur ein Beispielcode, ohne irgendwelche Absicherungen, usw.
  Mit Zitat antworten Zitat
Thorben86

Registriert seit: 20. Nov 2003
Ort: Brühl
365 Beiträge
 
Delphi 2005 Personal
 
#5

Re: [PHP][XML] - Liste

  Alt 25. Mär 2006, 14:01
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.
  Mit Zitat antworten Zitat
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#6

Re: [PHP][XML] - Liste

  Alt 26. Mär 2006, 06:07
Fuer sowas einfaches wuerde ich den SimpleXML-parser von PHP5 nehmen. Der ist sehr schnell und super einfach zu bedienen:
http://us3.php.net/manual/en/ref.simplexml.php
in deinem Fall:
Code:
$xml =simplexml_load_string(string) oder eben simplexml_load_file(dateiname);
foreach($xml->liste->bild as $bild) print($bild."\n");
Das wurde dir die Liste einfach ausgeben. Kannst du dir dann ja anpassen...
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz