Start · Sprachen · PHP · Referenz · xmlwriter_end_document

xmlwriter_end_document

Funktion

Beendet das aktuelle XML-Dokument und schreibt den abschließenden XML-Prolog in den Puffer oder die Datei.

seit PHP 5.1.2 Kategorie: xml

Signatur

xmlwriter_end_document(XMLWriter $writer): bool

Beschreibung

xmlwriter_end_document() schließt ein zuvor mit xmlwriter_start_document() geöffnetes XML-Dokument ab. Die Funktion schreibt alle noch ausstehenden schließenden Tags und stellt sicher, dass das Dokument wohlgeformt abgeschlossen wird. Sie sollte immer aufgerufen werden, bevor der Inhalt des XMLWriter-Puffers ausgelesen wird.

Diese Funktion ist Teil der prozeduralen XMLWriter-API. Seit PHP 8.0 ist der erste Parameter ein XMLWriter-Objekt; in früheren Versionen wurde eine Ressource übergeben. Die objektorientierte Entsprechung ist XMLWriter::endDocument().

Typischerweise wird nach xmlwriter_end_document() entweder xmlwriter_output_memory() aufgerufen, um den erzeugten XML-String aus dem Speicher-Puffer zu erhalten, oder der Inhalt wird automatisch in eine zuvor geöffnete Datei geschrieben. Ohne diesen Abschluss kann das erzeugte XML unvollständig oder ungültig sein.

Parameter

Name Typ Default Beschreibung
$writer Pflicht XMLWriter Die XMLWriter-Instanz, die das zu schließende Dokument repräsentiert. Wird mit xmlwriter_open_memory() oder xmlwriter_open_uri() erstellt.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false bei einem Fehler (z. B. wenn kein Dokument geöffnet wurde).

Beispiele

Einfaches XML-Dokument erstellen und ausgeben

<?php
$writer = xmlwriter_open_memory();
xmlwriter_set_indent($writer, true);
xmlwriter_set_indent_string($writer, '    ');

xmlwriter_start_document($writer, '1.0', 'UTF-8');

xmlwriter_start_element($writer, 'buecher');

xmlwriter_start_element($writer, 'buch');
xmlwriter_write_element($writer, 'titel', 'PHP Handbuch');
xmlwriter_write_element($writer, 'autor', 'Max Mustermann');
xmlwriter_end_element($writer); // buch

xmlwriter_end_element($writer); // buecher

xmlwriter_end_document($writer);

echo xmlwriter_output_memory($writer);
<?xml version="1.0" encoding="UTF-8"?> <buecher> <buch> <titel>PHP Handbuch</titel> <autor>Max Mustermann</autor> </buch> </buecher>

XML-Dokument direkt in eine Datei schreiben

<?php
$datei = '/tmp/ausgabe.xml';
$writer = xmlwriter_open_uri($datei);

xmlwriter_start_document($writer, '1.0', 'UTF-8');

xmlwriter_start_element($writer, 'konfiguration');
xmlwriter_write_attribute($writer, 'version', '2');
xmlwriter_write_element($writer, 'wert', '42');
xmlwriter_end_element($writer);

// Dokument abschließen und in Datei schreiben
$erfolg = xmlwriter_end_document($writer);

if ($erfolg) {
    echo "XML erfolgreich in '{$datei}' gespeichert.";
} else {
    echo "Fehler beim Abschließen des Dokuments.";
}
XML erfolgreich in '/tmp/ausgabe.xml' gespeichert.

// Wichtig · Fallstricke

Reihenfolge beachten: Vor dem Aufruf von xmlwriter_end_document() müssen alle geöffneten Elemente mit den entsprechenden xmlwriter_end_element()-Aufrufen geschlossen sein, da sonst möglicherweise ein ungültiges XML-Dokument entsteht. XMLWriter schließt zwar intern offene Elemente, aber auf dieses Verhalten sollte man sich nicht verlassen.

Objektorientierten Stil bevorzugen: Ab PHP 8.0 empfiehlt sich die Verwendung der Klasse XMLWriter mit der Methode endDocument() anstelle der prozeduralen Funktion, da die prozedurale Ressourcen-basierte API als veraltet gilt.