Start · Sprachen · PHP · Referenz · xmlwriter_full_end_element

xmlwriter_full_end_element

Funktion

Beendet das aktuelle XML-Element und schreibt immer ein vollständiges schließendes Tag, auch wenn das Element keinen Inhalt hat.

seit PHP 5.1.2 Kategorie: xml

Signatur

xmlwriter_full_end_element(XMLWriter $writer): bool

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

Typ
bool
Beschreibung
Gibt 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);
<?xml version="1.0" encoding="UTF-8"?> <root> <script></script> </root>

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;
end_element: <?xml version="1.0" encoding="UTF-8"?> <leer/> full_end_element: <?xml version="1.0" encoding="UTF-8"?> <leer></leer>

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