Start · Sprachen · PHP · Referenz · xmlwriter_end_element

xmlwriter_end_element

Funktion

Beendet das zuletzt geöffnete XML-Element und schreibt den schließenden Tag in den Ausgabe-Puffer des <code>XMLWriter</code>.

seit PHP 5.1.2 Kategorie: xml

Signatur

xmlwriter_end_element(XMLWriter $writer): bool

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

Typ
bool
Beschreibung
Gibt 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);
<?xml version="1.0" encoding="UTF-8"?> <books> <book id="1"> <title>PHP lernen</title> <author>Max Mustermann</author> </book> </books>

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();
<?xml version="1.0" encoding="UTF-8"?> <root> <child>Inhalt des Kind-Elements</child> </root>

// 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.