Signatur
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
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-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.";
}
// 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.