XML-Daten leserlich formatiert ausgeben

Eine kleine Erweiterung der Klasse simpleXMLElement um eine Methode, die XML-Dateien formatiert abspeichert.

Seit PHP5 ist das Erstellen und Bearbeiten von XML-Daten zum Kinderspiel geworden. Mit SimpleXML hat man eine Palette an Werkzeugen zur Hand, um XML-Daten in Form eines Objektes nahezu intuitiv zu bearbeiten. Einziges Manko: mit der Methode asXML() ausgegebene XML-Strings sehen dann so aus, dass alle Tags hintereinander in eine Zeile geschrieben sind.

Gerade in der Entwicklungsphase braucht man die XML-Struktur jedoch gut leserlich vor sich. Ich habe mir dafür die Klasse um eine Methode save() erweitert:

PHP:
<?php
class myxml extends SimpleXMLElement {
 
    /** method save()
    * @param:   string $filename
    * 
    */
    public function save($file_name) {
 
        if(!$file_name) {
            exit('Fehlender Parameter für myxml::save()!');
        }
 
        $xml_string = $this->asXML();
 
        //DOM erzeugen
        $dom = DOMDocument::loadXML($xml_string);
 
        //Ausgabe formatieren
        $dom->preserveWhiteSpace = false;
        $dom->formatOutput = true;
 
        //Und das ganze speichern
        if($dom->save($filename)) {
            return true;
        }
        else {
            return false;
       }
    }
}
?>

Um ein Objekt der Kindklasse myxml auch aus den statischen Methoden der Elternklasse zu erzeugen, gibt man dort einfach den Klassennamen als Parameter mit:

PHP:
<?php 
$myxml_object = simpleXML_load_file('filename.xml','myxml');
 
//Nach getaner Arbeit abspeichern:
$myxml_object->save($filename);
?>

Kommentare

Es wurden noch keine Kommentarte zu diesem Artikel geschrieben.

Fragen, Ideen oder Kritik? – Hier ist Platz dafür!

Dein Kommentar

Um ein Kommentar abzugeben, reicht der Text im Kommentarfeld. Die anagabe eines Namens wäre nett, ist aber nicht erforderlich.

Du darfst folgenden HTML-Code verwenden, musst aber nicht:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">