PHP XML Datei dynamisch parsen

Mathias09876

Ensign
Registriert
Nov. 2010
Beiträge
235
Hallo zusammen,

ich habe hier eine XML-Datei, welche eine Benutzeroberfläche repräsentiert. Diese will/muss ich nun mit Hilfe von PHP als Webversion erstellen.
Die Benutzeroberfläche enthält verschiedene Button, welche entweder Informationen (Telefonnummern) anzeigen oder weitere Unterbenenen öffnen. In der XML-Datei stehen die Informationen über Buttongröße, Position und zugehöriger Funktion (also neue Ebene öffnen, oder Telefonnummer anzeigen).
Der Aufbau der XML-Datei ist dabei folgender:

<ITEMS>
...<EBENE>
......<PARAMETER>...</PARAMETER>
......<ITEMS>
.........<ITEM>...</ITEM> // Ein Button
.........<ITEM>...</ITEM> // Noch ein Button
.........<EBENE> // Unterebene
............<PARAMETER>...</PARAMETER>
............<ITEMS>
...............<ITEM>...</ITEM> // Button der Unterbene
...............<ITEM>...</ITEM>
...............<ITEM>...</ITEM>
...............<ITEM>...</ITEM>
............</ITEMS>
.........</EBENE>
......</ITEMS>
...</EBENE>
</ITEMS>


Mein Problem ist momentan, dass ich im Vorhinein nicht weiß, ob bzw. wieviele Unterebenen vorhanden sind.
Bisher hatte ich mit SimpleXML direkt auf die Ebenen zugegriffen - nur dazu muss ich wissen, wo sich die Ebene befindet. Die Ausgabe der Button erfolgt bereits dynamisch. Mein Problem ist nun, dass mir momentan keine gute Idee kommt, wie ich es lösen kann auf Unterebenen dynamisch zu reagieren. Ich dachte mir, dass ich für jede Ebene eine html-Datei erstelle, welche die Button enthält und von der aus bei bedarf auf weitere Unterebenen verzweigt werden kann.

Nun meine Frage, ist es überhaupt möglich mit SimpleXML eine XML-Datei dynamisch zu parsen oder muss ich immer den exakten Pfad im vorhinein kennen? Habt ihr evtl noch einen alternativen Vorschlag, wie ich das Problem lösen könnte? Die einzigen Vorgaben sind PHP (bzw. eine Platformunabhängigkeit, d.h. auf keine Frameworks o.ä. angewiesen - es muss also nicht zwangsläufig PHP sein) und ein dynamisches Auslesen, da sich die Oberfäche jederzeit ändern kann.

Hoffe ihr könnt mir ein bisschen weiterhelfen :)

Grüße
Mathias
 
In ein Array wandeln? Kann dir grad die Funktion nicht geben, die ich für mich nutze. Lässt sich aber bestimmt leicht finden.
 
Wäre nicht auch die Verwendung von JSON möglich? Da wäre das mit einem Funktionsaufruf getan.

Falls nicht ist das keine große Sache, ist vom Prinzip her ja nicht anders als eine definierte Ordnerstruktur zu durchsuchen, wo man nur nicht weiß wie viele Ebenen sie besitzt.

In PHP kann man sich das im Falle von XML mit dem eingebauten XMLReader, ein paar If-Abfragen und foreach-Schleifen schnell basteln.
 
simpleXML gibt dir ja ein objekt zurück, welches du wie ein array behandeln kannst
beim durchiterieren der ersten ebene kannst du ja kucken, ob das element, welches untereinträge enthalten kann, existiert bzw. ein array ist, was dann darauf schließt, dass es weitere untereinträge gibt
diese funktion musst du dann rekursiv machen, also sich selbst aufrufend
 
Zurück
Oben