PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : XML-Knoten-Objekt in Array umwandeln


knight1
06.09.2009, 10:33:31
HI SelfPHP-Com,
ich bin im moment etwas am verzweifeln.
Momentan bin ich dabei für eine Seite eine Konfigurationsverwaltung zu schreiben. Diese Seite soll mit XML Konfiguriert werden und auch der Content soll in eine XML-Datei anstelle eine Datenbank gespeichert werden.
Mein Problem ist das übernehmen der einzelnen XML-Knoten in einer Datei als Array-Indizes und -Werte.
Gäbe es nur eine fest definierte anzahl an Unterknoten wäre es kein Problem. Die Dateien können aber, theoretisch zumindest, eine beliebige anzahl von Unterknoten haben.
Ich weiß dass mein Vorhaben über eine Rekursive Funktion gemacht werden muss/kann.
Ich habe mich bisher aber noch nicht mit rekursiven Funktionen beschäfftigt.

Hier mal die XML-Datei wie sie bisher aussieht:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<config>
<design>
<body
font-family=""
font-style=""
font-variant=""
font-size=""
font-weight=""
font-stretch=""
word-spacing=""
letter-spacing=""
text-decoration=""
text-transform=""
color=""
text-shadow=""
background-color=""
margin=""
></body>
<a>
<link
font-family=""
font-style=""
font-variant=""
font-size=""
font-weight=""
font-stretch=""
word-spacing=""
letter-spacing=""
text-decoration=""
text-transform=""
color=""
text-shadow=""
></link>
<visited
font-family=""
font-style=""
font-variant=""
font-size=""
font-weight=""
font-stretch=""
word-spacing=""
letter-spacing=""
text-decoration=""
text-transform=""
color=""
text-shadow=""
></visited>
<active
font-family=""
font-style=""
font-variant=""
font-size=""
font-weight=""
font-stretch=""
word-spacing=""
letter-spacing=""
text-decoration=""
text-transform=""
color=""
text-shadow=""
></active>
<hover
font-family=""
font-style=""
font-variant=""
font-size=""
font-weight=""
font-stretch=""
word-spacing=""
letter-spacing=""
text-decoration=""
text-transform=""
color=""
text-shadow=""
></hover>
</a>
</design>
</config>


Es soll die Möglichkeit bestehen weitere Konfigurations-Elemente hinzufügen zu können ohne dass das Script anpassen zu müssen.

Die Datei lese ich mit simplexml_load_file ein:

$config = simplexml_load_file("xml/config.xml");
Referenz: http://www.php.net/manual/de/function.simplexml-load-file.php

Danach stehen mir die Konten als Okjekte und die Attribute als Array-Index des jeweiligen Knotens zur Verfügung.

$config->design->body['font-family'];

Ich weiß dass ich nicht ein fertiges Script erwarten kann. Tue ich auch nicht. Aber über Denkanstöße, Tipps bzw. Erklärungen wäre ich schon sehr froh.

Ich bin am überlegen ober ich nicht OOP-Variante beibehalten soll ohne das ganze in ein reines Array umzuwandeln.

Aber da ich so etwas sicherlich später in einer anderen Variante brauchen kann bitte ich trotzdem um Hilfe.


Kai aka Knight1

urvater
24.10.2009, 09:47:08
Das oder die neuen Elemente wirst du ja vermutlich über ein Formular erstellen. Beim Speichern des neuen Elementes in die XML Datei würde ich diese zuvor auslesen. Alle vorhandenen Elemente zwischen speichern und diese zusammen mit dem neuen Element in diese Datei neu reinschreiben.

Ich hoffe ich hab mich halbwegs verständlich ausgedrückt

muhlba91
11.05.2011, 15:05:37
Hallo,

ich habe vor einiger Zeit auch einen XML Parser (XML -> Array) benötigt und folgendes gefunden: http://www.criticaldevelopment.net/xml/doc.php
Vielleicht kannst du ihn auch brauchen (weiß ja nicht was du alles aufführen willst... :-) )