PHP || XML-Datei mit variabler Anzahl an Child-Nodes parsen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aufrufen
aussehen
beispiel
code
datenbank
datum
eintragen
frage
funktion
gleiche funktion
logik
problem
schleife
sinn
unterschiedliche anzahl
url
verarbeiten
verpacken
weitermachen
wissen
-
Ich habe eine XML-Datei, deren Nodes, sowie alle Child-Nodes dieser Nodes und die Child-Nodes der Child-Nodes (usw.) in eine MySQL-Datenbank importiert werden sollen.
Nun haben die Nodes aber eine unterschiedliche Anzahl von Child Nodes, und ich komme einfach nicht dahinter, wie ich das in einer Schleife sinnvoll durchlaufen kann.
Mein Code sieht derzeit ungefähr so aus.
foreach ($xml->children() as $second_gen) { In MySQL eintragen.... foreach ($second_gen->children() as $third_gen) { In MySQL eintragen.... foreach ($third_gen->children() as $fourth_gen) { In MySQL eintragen.... } } }
Wie ihr seht, frage ich jede Child-Node nach weiteren Child-Nodes ab, ohne zu wissen, ob sie überhaupt Child-Nodes haben.
Ich kann das jetzt natürlich bis zu 20 Child-Nodes verschachteln, dann wird sicher keine ausgelassen....das halte ich aber nicht für eine sehr elegante Lösung.
Ich müsste also irgendwie prüfen, ob eine Child-Node vorhanden ist.
Das allein wäre nicht so das Problem....aber wie lege ich fest, dass die Schleife dann eine Ebene tiefer geht? (Also zur untergeordneten Child-Node?) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
adelwoehrer schrieb:
Indem du das durchlaufen der Childnodes rekursiv aufbaust:
Das allein wäre nicht so das Problem....aber wie lege ich fest, dass die Schleife dann eine Ebene tiefer geht? (Also zur untergeordneten Child-Node?)
Es wird nach Child-Nodes gesucht
Wenn welche gefunden werden: gleiche Funktion mit dem Childnode als root aufrufen.
Wenn nichts gefunden wurde: Node-Daten des aktuellen Nodes verarbeiten und mit dem nächsten Node weitermachen. -
Die Logik dahinter ist mir soweit klar.
Ich weiß nur nicht, wie das im Code dann aussehen soll.
Hast Du ein Beispiel?
EDIT:
Gedankenblitz. -.-
Hätte mir eigentlich gleich in den Sinn kommen können, das ganze in einer Funktion zu verpacken.
Danke für den Denkanstoß.
Beitrag zuletzt geändert: 16.4.2012 13:59:16 von adelwoehrer -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage