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
class myxml extends SimpleXMLElement {

	/**
	 * save formated
	 *
	 * @param string $filename 
	 */
	public function save( $file_name ) {
    
		$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:

$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 Angabe 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=""> <s> <strike> <strong>