Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] XML Hierarchie (Baumstruktur) in PHP wiedergeben

Einklappen

Neue Werbung 2019

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

  • [Erledigt] XML Hierarchie (Baumstruktur) in PHP wiedergeben

    Hallöle zusammen

    Ich habe eine Funktion, die mir ein valides XML einliest und dann in einem Array speichert. Nun die Frage:

    Wie kann ich realisieren, dass die originale Baumstruktur des XMLs grafisch wieder dargestellt wird?

    Die Funktion sieht bisher folgendermassen aus:

    PHP-Code:
    function readAll ($nextarray) {
        
    //Fetching first col in Row....
        
    if (is_array($nextarray)) {
            
    $dictkey key($nextarray);
            if (
    $dictkey == "&dict") {
                
    //It's a hash table...
                
    foreach($nextarray as $key => $value) {
                    if (
    is_array($value)) {
                        
    readAll($value);
                    }
                    else{
                        if (
    $key != "&dict") {
                            echo 
    "<tr><td>$key</td><td>$value</td></tr>";
                        }
                    }
                }
            }
            else {
                
    //It's a normal Array...
                
    foreach($nextarray as $nextarray2) {
                    if (
    is_array($nextarray2)) {
                        
    readAll($nextarray2);
                    }
                    else {
                        if (
    $nextarray != "&dict") {
                            echo 
    "<tr><td>Eintrag</td><td>$nextarray2</td></tr>";
                        }
                    }
                    
                }
            }   
        }
        if (
    is_string($nextarray)) {
            if (
    $nextarray == "&dict") {
                
    //Es handelt sich um ein &dict, daher muss nichts ausgegeben werden.
            
    }
            else {
                echo 
    "<tr><td>Eintrag</td><td>$nextarray</td></tr>";
            }
        }
        if (
    is_numeric($nextarray)) {
               echo 
    "<tr><td>Eintrag</td><td>$nextarray</td></tr>";
        }
        return 
    $nextarray;
    }


    $result readAll($config); 


  • #2
    Was bedeutet bei dir "grafische Darstellung"?

    Kommentar


    • #3
      Zitat von Flor1an Beitrag anzeigen
      Was bedeutet bei dir "grafische Darstellung"?
      Im Sinne, dass es nachher (mit dem Typ aus dem XML, zB. <string>) wie eine Ordnerstruktur dargestellt wird, so zB.

      Oberarray
      ...Unterarray
      ......String: test
      ......Integer: 23
      ...Nächstes Unterarray
      ......String: hallo

      So in der art.

      Kommentar


      • #4
        [MOD: verschoben]
        --

        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


        --

        Kommentar


        • #5
          Kennst du print_r? Sieht für mich so aus als würdest du nach so etwas suchen.
          Alternativ: var_dump

          Ansonsten mit Rekursiven Funktionen...
          Fynder - http://www.fynder.de - Tutorials zum Thema Technik

          Kommentar


          • #6
            Wo genau liegt denn das Problem? Funktioniert die Funktion nicht? Fehlermeldungen? Läuft das nicht so wie du willst? Debuggen?

            Google: PHP XML rekursiv
            You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.

            Kommentar


            • #7
              Ich frage mich gerade, wo in diesem Thread überhaupt XML auftaucht. Ich habe das Gefühl, in deiner Beschreibung fehlt die Hälfte, floripipo. Etwa ein Beispiel für Eingabedaten.

              Edit: Wobei, die Eingabedaten sind eigentlich egal, wenn es nur darum geht, ein XML-Dokument rekursiv auszugeben. Das hätte dann allerdings nichts mit dem Array-Gedöns hier im Thread zu tun. Irgendwas passt da nicht.

              Und ich werfe mal DOMDocument in den Raum, wenn es um XML geht.

              - http://php.net/manual/en/class.domdocument.php

              Kommentar


              • #8
                Okok, ich poste hier mal noch was. Einen Teil des XMLs zum Beispiel:

                Code:
                <?xml version="1.0" encoding="UTF-8"?>
                <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "[pfad]/PropertyList-1.0.dtd">
                <plist version="1.0">
                    <dict>
                        <key>Searcher</key>
                        <dict>
                            <key>Server</key>
                            <dict>
                                <key>ListenPort</key>
                                <integer>1234</integer>
                        		<key>SoapNS</key>
                        		<string>urn:xxxxxxxxxx</string>
                            </dict>
                            <key>Lucene</key>
                            <dict>
                        		<key>IndexDirs</key>
                        		<dict>
                        		    <key>cvs</key>
                        		    <string>index/cvs/</string>
                        		    <key>dokuwiki</key>
                        		    <string>index/dokuwiki/</string>
                       		    </dict>
                            </dict>
                        </dict>
                
                        <key>Indexer</key>
                        <dict>
                            <key>Backend</key>
                            <dict>
                        		<key>Workflows</key>
                        		<dict>
                                           <key>dokuwiki</key>
                So, das wird per Funktion ausgelesen, welche als rückgabewert ein verschachteltes Array hat, sodass zB. der Wert aus ListenPort so abgefragt werden kann:

                $array["Searcher"]["Server"]["ListenPort" ]

                Nun gebe ich all das per obiger Funktion aus.

                Das XML hat aber eine eigene Struktur und diese möchte ich gerne verdeutlichen, eben durch grafische Darstellung, dass zB. Server eingerückt ist und ListenPort dann doppelt so viel eingerückt usw.

                Am besten wäre dies wahrscheinlich mit DIVs zu realisieren, oder?

                Danke für die Hilfe

                Flo

                Kommentar


                • #9
                  Verschachtelte, unsortierte Listen ?
                  Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                  Kommentar


                  • #10
                    Habs jetzt doch mit verschachtelten Divs lösen können, wobei's nicht ganz so einfach war, den richtigen Ort für die DIV-Tags zu finden ^^ aber danke vielmals für die Hilfe

                    Kommentar

                    Lädt...
                    X