Signatur
Beschreibung
xmlwriter_end_element() schließt das aktuell offene XML-Element, indem es den entsprechenden schließenden Tag (z. B. </item>) in den internen Puffer des XMLWriter-Objekts schreibt. Die Funktion arbeitet nach dem LIFO-Prinzip (Last In, First Out): Das zuletzt geöffnete und noch nicht geschlossene Element wird geschlossen.
Die Funktion wird typischerweise nach xmlwriter_start_element() aufgerufen, wenn der Inhalt des Elements (Text, Attribute, Kind-Elemente) bereits vollständig geschrieben wurde. Wurden einem Element zuvor Attribute hinzugefügt, schreibt die Funktion korrekt den vollständigen schließenden Tag.
Wenn das Element keinen Inhalt besitzt, kann alternativ xmlwriter_end_element() dennoch genutzt werden, um einen expliziten schließenden Tag zu erzeugen (z. B. <br></br>). Für leere Elemente ohne Inhalt steht xmlwriter_write_element() als Komfort-Funktion zur Verfügung, die Start- und End-Tag in einem Aufruf kombiniert.
Ab PHP 8.0 wird der prozedurale Stil mit einem XMLWriter-Objekt als erstem Parameter verwendet. In älteren PHP-Versionen (5.x–7.x) akzeptiert die Funktion ein resource-Handle, das von xmlwriter_open_memory() oder xmlwriter_open_uri() zurückgegeben wird.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $writer Pflicht | XMLWriter | Das XMLWriter-Objekt (ab PHP 8.0) bzw. das resource-Handle (PHP 5/7), das von xmlwriter_open_memory() oder xmlwriter_open_uri() zurückgegeben wurde. |
Rückgabewert
true bei Erfolg zurück. Gibt false zurück, wenn kein offenes Element vorhanden ist, das geschlossen werden könnte, oder wenn ein interner Fehler aufgetreten ist.Beispiele
Einfaches XML-Dokument mit verschachtelten Elementen
<?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, 'books');
xmlwriter_start_element($writer, 'book');
xmlwriter_write_attribute($writer, 'id', '1');
xmlwriter_start_element($writer, 'title');
xmlwriter_text($writer, 'PHP lernen');
xmlwriter_end_element($writer); // </title>
xmlwriter_start_element($writer, 'author');
xmlwriter_text($writer, 'Max Mustermann');
xmlwriter_end_element($writer); // </author>
xmlwriter_end_element($writer); // </book>
xmlwriter_end_element($writer); // </books>
xmlwriter_end_document($writer);
echo xmlwriter_output_memory($writer);
OOP-Stil: XMLWriter als Objekt
<?php
$writer = new XMLWriter();
$writer->openMemory();
$writer->setIndent(true);
$writer->setIndentString(' ');
$writer->startDocument('1.0', 'UTF-8');
$writer->startElement('root');
$writer->startElement('child');
$writer->text('Inhalt des Kind-Elements');
$writer->endElement(); // </child>
$writer->endElement(); // </root>
$writer->endDocument();
echo $writer->outputMemory();
// Wichtig · Fallstricke
Achtung: Jeder Aufruf von xmlwriter_start_element() muss durch einen entsprechenden Aufruf von xmlwriter_end_element() abgeschlossen werden, damit ein wohlgeformtes XML-Dokument entsteht. Ein fehlendes xmlwriter_end_element() führt zu ungültigem, nicht wohlgeformtem XML.
Für leere Elemente (Elemente ohne Text-Inhalt) kann xmlwriter_full_end_element() verwendet werden, wenn explizit ein vollständiger schließender Tag (nicht die Kurzform <tag/>) erzwungen werden soll.
Ab PHP 8.0 wurde der resource-basierte prozedurale Stil durch einen XMLWriter-Objekt-Parameter ersetzt. Code, der ältere PHP-Versionen unterstützen muss, sollte entsprechend geprüft werden.