Ankündigung

Einklappen
Keine Ankündigung bisher.

tree menu mit xml

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • tree menu mit xml

    Hallo zusammen, ich habe jetzt ein bisschen mit XMl gebastelt und habe folgendes bekommen:

    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>
    PHP-file

    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);
    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
Lädt...
X