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.