Signatur
Beschreibung
xmlwriter_full_end_element() schließt das zuletzt geöffnete XML-Element, indem es ein explizites schließendes Tag schreibt – also beispielsweise </tag> statt des selbstschließenden <tag/>. Dies ist der wesentliche Unterschied zur Funktion xmlwriter_end_element(), die für leere Elemente automatisch eine Kurzform ohne Endtag verwenden kann.
Die Funktion ist dann sinnvoll, wenn die Zielanwendung oder der Zielstandard zwingend vollständige schließende Tags erwartet – etwa bei bestimmten HTML- oder XHTML-Dokumenten, wo z. B. <script></script> anders behandelt wird als <script/>.
Sie arbeitet mit dem prozeduralen Stil der XMLWriter-API. Im objektorientierten Stil steht die Methode XMLWriter::fullEndElement() zur Verfügung. Die Funktion sollte immer paarweise mit xmlwriter_start_element() oder einer vergleichbaren Öffnungsfunktion verwendet werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $writer Pflicht | XMLWriter | Die XMLWriter-Instanz, auf der die Operation ausgeführt wird. Sie wird durch xmlwriter_open_memory() oder xmlwriter_open_uri() erzeugt. |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler – etwa wenn kein geöffnetes Element vorhanden ist, das geschlossen werden könnte.Beispiele
Vollständiges schließendes Tag für ein leeres Element erzwingen
<?php
$writer = xmlwriter_open_memory();
xmlwriter_set_indent($writer, true);
xmlwriter_start_document($writer, '1.0', 'UTF-8');
xmlwriter_start_element($writer, 'root');
// Leeres Element: xmlwriter_end_element würde <script/> schreiben
// xmlwriter_full_end_element schreibt immer <script></script>
xmlwriter_start_element($writer, 'script');
xmlwriter_full_end_element($writer); // -> <script></script>
xmlwriter_end_element($writer); // </root>
xmlwriter_end_document($writer);
echo xmlwriter_output_memory($writer);
Vergleich zwischen end_element und full_end_element
<?php
// Mit xmlwriter_end_element (Kurzform möglich)
$w1 = xmlwriter_open_memory();
xmlwriter_start_document($w1, '1.0', 'UTF-8');
xmlwriter_start_element($w1, 'leer');
xmlwriter_end_element($w1);
xmlwriter_end_document($w1);
echo "end_element: " . trim(xmlwriter_output_memory($w1)) . PHP_EOL;
// Mit xmlwriter_full_end_element (immer vollständiges Tag)
$w2 = xmlwriter_open_memory();
xmlwriter_start_document($w2, '1.0', 'UTF-8');
xmlwriter_start_element($w2, 'leer');
xmlwriter_full_end_element($w2);
xmlwriter_end_document($w2);
echo "full_end_element: " . trim(xmlwriter_output_memory($w2)) . PHP_EOL;
// Wichtig · Fallstricke
Wichtig: Im Gegensatz zu xmlwriter_end_element() erzeugt xmlwriter_full_end_element() für leere Elemente immer ein explizites schließendes Tag (<tag></tag>). Dies ist bei der HTML-Ausgabe oder bei der Kompatibilität mit Parsern relevant, die keine Kurzform akzeptieren.
Die Funktion wirkt nur auf das zuletzt geöffnete, noch nicht geschlossene Element. Verschachtelte Strukturen müssen von innen nach außen geschlossen werden.