DerMambo: XML mit richtiger Formatierung speichern

Beitrag lesen

Hallo zusammen,
ich hab schon seit Längerem ein Problem und dazu noch keine adäquate Lösung gefunden.
Ich lade per PHP (DOM) eine XML Datei als Basis für den Content einer Website. Dabei können zB. auch Inhalte hinzugefügt werden. Drücke ich einen Knopf wird in die XML-Datei der neue Inhalt eingefügt.
Das Problem ist, in der XML-Datei wird das neue XML-Element in einer einzigen Zeile geschrieben, nicht aber mit Zeilenumbrüchen. Das führt dazu, dass JavaScript die XML-Datei nicht korrekt darstellen kann.

Angenommen ich habe diese XML-Datei:

  
<?xml version="1.0" encoding="iso-8859-1"?>  
<!DOCTYPE content SYSTEM "content.dtd">  
<content id="root">  
  
<folder id="fold_1">  
<link id="tree_1" linkText="Ordner" url="#"/>  
<head>Ordner</head>  
<text>Der Prozess: Ordner</text>  
</folder>  
  
</content>  

Dann füge ich über einen Knopfdruck einen neuen "folder" hinzu, dann entsteht folgendes:

  
<?xml version="1.0" encoding="iso-8859-1"?>  
<!DOCTYPE content SYSTEM "content.dtd">  
<content id="root">  
  
<folder id="fold_1">  
<link id="tree_1" linkText="Ordner" url="#"/>  
<head>Ordner</head>  
<text>Der Prozess: Ordner</text>  
</folder>  
  
  
  
<folder id="fold_2"><link id="tree_2" linkText="Ordner" url="#"/><head>Ordner</head><text>Der Prozess: Ordner</text></folder></content>  

Der Folder mit id="fold_2" wird in nur einer einzigen Zeile angezeigt, es fehlen die Zeilenumbrüche.
In PhP sieht das kurzgefasst so aus:

  
$dom = new DomDocument('1.0', 'ISO-8859-1');  
$dom -> formatOutput = true; // bringt irgendwie auch nix...  
$dom->load('content.xml');  
  
$newFolder = createFolder($foldID); //neuen Ordner erstellen  
$appendNode = getCategory($id); //finde den Ordner wo es angehangen werden soll  
$appendNode->parentNode->appendChild($newFolder); //hänge Ordner an  
$dom->save('content.xml'); // speichere das neue XML-Dokument  

Der PHP-Code ist nicht komplett sollte aber die Vorgehensweise deutlich machen.
Ich habe eine Vermutung, auch schon in die Richtung getestet aber ohne Erfolg. Ich glaube, dass nach den einzelnen Elementen zB. "<folder id="fold_2">" die #text-Elemente fehlen. Habe schon versucht überall TextNodes anzubauen, hat auch nicht wirklich geholfen...

Wenn jemand eine Idee hat wäre ich sehr dankbar.
Ich habe mal versehentlich einen folder "zu weit oben" angehangen. also eine ebene über dem Root-Element (content). Da wurde dann das element richtig dargestellt:

  
<?xml version="1.0" encoding="iso-8859-1"?>  
<!DOCTYPE content SYSTEM "content.dtd">  
<content id="root">  
  
</content>  
  
<folder id="fold_1">  
<link id="tree_1" linkText="Ordner" url="#"/>  
<head>Ordner</head>  
<text>Der Prozess: Ordner</text>  
</folder>  

ist nur nicht ganz das, was ich brauche ;)

Grüße,
Manuel