Hallo,
ich lese über ein Formular Daten ein und schreibe diese in eine bestehende XML Datei.
Die XML Datei hat folgende Struktur:
HTML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<galerie xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<bild>
<bildnr>1</bildnr>
<bildtitel>Hugo</bildtitel>
<remark>Dame mit Kranich</remark>
<laenge>30</laenge>
<breite>60</breite>
<rahmen>ja</rahmen>
<avail>a.A.</avail>
</bild>
<bild>
<bildnr>2</bildnr>
<bildtitel>Heinrich</bildtitel>
<remark></remark>
<laenge>70</laenge>
<breite>55</breite>
<rahmen>ja</rahmen>
<avail>a.A.</avail>
</bild>
<bild>
<bildnr>3</bildnr>
<bildtitel>Hermann</bildtitel>
<remark></remark>
<laenge>45</laenge>
<breite>45</breite>
[size=10] <rahmen>ja</rahmen>[/size]
[size=10] <avail>a.A.</avail> [/size]
[size=10]</bild> [/size]
[size=10]</galerie>[/size]
[size=10]
[/size]
[size=10]
[/size]
[size=10]Hier der Code, mit dem ich die Datei erweitere:[/size]
[size=10]
[/size]
[code=php]$datname = $_POST["kategorie"];
// Altes XML laden und neue Todes hinzufügen
$daten = simplexml_load_file($datname);
$anzahl = count($daten);
$neuer_zaehler = $anzahl +1;
$add_child = $daten->addChild('bild'); // Neues <bild>-Tag
$add_child->addChild('bildnr', $neuer_zaehler); // Neues <bildnr>-Tag
$add_child->addChild('bildtitel', $_POST["titel"]); // Neues <bildtitel>-Tag
$add_child->addChild('remark', $_POST["remark"]); // Neues <remark>-Tag
$add_child->addChild('laenge', $_POST["laenge"]); // Neues <laenge>-Tag
$add_child->addChild('breite', $_POST["breite"]); // Neues <breite>-Tag
$add_child->addChild('rahmen', $_POST["rahmen"]); // Neues <rahmen>-Tag
$add_child->addChild('avail', $_POST["preis"]); // Neues <avail>-Tag
$xml_data = $daten->asXML();
// In Datei schreiben
$fp = fopen($datname, 'wb');
if($fp) {
$wr = fputs($fp, $xml_data);
if($wr){ echo 'Ihre Daten wurden gespeichert:<br>';
echo "Bildnummer: " . $neuer_zaehler . "<br>";
echo "Bildtitel: " . $_POST["titel"] . "<br>";
echo "Beschreibung: " . $_POST["remark"] . "<br>";
echo "Länge: " . $_POST["laenge"] . "<br>";
echo "Breite: " . $_POST["breite"] . "<br>";
echo "Rahmen: " . $_POST["rahmen"] . "<br>";
echo "Verfügbarkeit: " . $_POST["preis"] . "<br>"; }
else echo 'Fehler beim Speichern Ihrer Daten!'; }
else { echo 'Konnte Speichermedium nicht öffnen!'; }
fclose($fp);
Alles anzeigen
Mein Problem dabei ist jetzt, dass die zusätzlichen Nodes alle in eine Reihe geschrieben werden, also z.B.
<bild><bildnr>1</bildnr><bildtitel>Hugo</bildtitel><remark>Dame mit Kranich</remark><laenge>30</laenge><breite>60</breite><rahmen>ja</rahmen><avail>a.A.</avail></bild>
Das möchte ich natürlich nicht, die Daten sollen unter Beibehaltung der bisherigen Struktur abgespeichert werden, also jeder Node in einer separaten Zeile.
Wie mache ich das?
Danke schon mal und viele Grüße,
Michael