Einzelnen Beitrag anzeigen

MathiasSimmack
(Gast)

n/a Beiträge
 
#4

Re: [PHP][XML] - Liste

  Alt 25. Mär 2006, 08: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