Hallo zusammen, ich habe jetzt ein bisschen mit XMl gebastelt und habe folgendes bekommen:
XMl-file
PHP-file
Was genau diese PHP datei macht ist folgende:
Comuter
Computer2
Sie listet als erstes die Hauptrubriken mit tag name level0. Wenn ich auf "Computer" clicke, dann zeigen sich die Unterrubriken mit tag-name level1, aber das Problem ist es zeigen sich alle Unterrubriken mit level1
Wie kann ich es machen, dass wenn ich auf Computer clicke, d.h wenn ich den parameter at=a1 übergebe, dass sich nur die Untermunüs von Computer anzeigen lassen und ohne diese von Computer2?
Es sollte so aussehen bei parameter at=a1:
Computer
Hardware
Software
Computer2
Kann man das irgendwie beinflussen?
Ich bedanke mich im voraus!
Gruß
Nik
XMl-file
Code:
<?xml version="1.0" encoding="iso-8859-1" ?> <item> <level0 id="a1" type="Computer"> <level1 id="b1" type="Hardware"> <level2 id="c1" type="Motherboard"></level2> <level2 id="c2" type="Modem"></level2> </level1> <level1 id="b2" type="Software"> <level2 id="c3" type="Windows"></level2> <level2 id="c4" type="Linux"></level2> </level1> </level0> <level0 id="a2" type="Computer2"> <level1 id="b3" type="Hardware2"> <level2 id="c5" type="Motherboard2"></level2> <level2 id="c6" type="Modem2"></level2> </level1> <level1 id="b4" type="Software2"> <level2 id="c7" type="Windows2"></level2> <level2 id="c8" type="Linux2"></level2> </level1> </level0> </rss>
Code:
$file="rubriken.xml";
$tiefe = 0;
$at = $_GET['at'];
// Tags behandeln
function startElement($parser, $name, $attr)
{
global $text, $tiefe, $id, $type, $at;
$tiefe++;
$text[$tiefe] = "";
switch ($name)
{
case "item":
echo("<table border=1>\n");
break;
case "level0":
$id = $attr["id"];
$type = $attr["type"];
echo("<tr><td valign=\"top\">$type</td></tr>");
break;
case "level1":
$id = $attr["id"];
$type = $attr["type"];
if($at == "a1")
{
echo("<tr><td valign=\"top\">$type</td></tr>");
}
break;
case "level2":
$id = $attr["id"];
$type = $attr["type"];
if($at == "b1")
{
echo("<tr><td valign=\"top\">$type</td></tr>");
}
break;
}
}
function endElement($parser, $name) {
global $text, $tiefe, $id, $type, $at;
$tiefe--;
switch ($name)
{
case "level2":
if($at == "b1")
{
echo("\n");
}
break;
case "level1":
if($at == "a1")
{
echo("\n");
}
break;
case "level0":
echo("\n");
break;
case "item":
echo("</table>\n");
break;
}
}
// Daten behandeln
function charData($parser, $data) {
global $text, $tiefe;
// Leerdaten entfernen
$data = trim($data);
// Verhindert Überschreiben vorher gesetzter Werte in authorlist
if ($data != "") {
$text[$tiefe] = "$data";
}
}
// Parser erzeugen
$parser = xml_parser_create();
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, false);
xml_set_element_handler($parser, "startElement", "endElement");
xml_set_character_data_handler($parser, "charData");
// File lesen und parsen
if (!$fp = fopen($file, "r"))
die("Datei $file kann nicht geöffnet werden.");
while ($data = fread($fp, 4096))
{
if (!xml_parse($parser, $data, feof($fp)))
die("XML-Fehler: Zeile ".xml_get_current_line_number($parser));
}
fclose($fp);
xml_parser_free($parser);
Comuter
Computer2
Sie listet als erstes die Hauptrubriken mit tag name level0. Wenn ich auf "Computer" clicke, dann zeigen sich die Unterrubriken mit tag-name level1, aber das Problem ist es zeigen sich alle Unterrubriken mit level1
Wie kann ich es machen, dass wenn ich auf Computer clicke, d.h wenn ich den parameter at=a1 übergebe, dass sich nur die Untermunüs von Computer anzeigen lassen und ohne diese von Computer2?
Es sollte so aussehen bei parameter at=a1:
Computer
Hardware
Software
Computer2
Kann man das irgendwie beinflussen?
Ich bedanke mich im voraus!
Gruß
Nik
