Signatur
Beschreibung
xmlwriter_end_attribute() schließt ein XML-Attribut ab, das zuvor mit xmlwriter_start_attribute() oder xmlwriter_start_attribute_ns() geöffnet wurde. Zwischen dem Start- und dem End-Aufruf wird der Attributwert üblicherweise mit xmlwriter_text() gesetzt.
In der objektorientierten Schreibweise steht die Methode XMLWriter::endAttribute() zur Verfügung. Beide Varianten erzeugen denselben XML-Ausgabeeffekt und sind funktional identisch.
Diese Funktion wird immer dann benötigt, wenn komplexere Attributwerte erzeugt werden sollen, zum Beispiel solche, die aus mehreren Text-Segmenten zusammengesetzt werden. Für einfache Attributwerte ist xmlwriter_write_attribute() die kompaktere Alternative, da sie Start, Wert und Ende in einem Schritt kombiniert.
Wichtig: Wird xmlwriter_end_attribute() aufgerufen, ohne dass zuvor ein Attribut mit xmlwriter_start_attribute() geöffnet wurde, liefert die Funktion false zurück und erzeugt keinen Ausgabeeffekt.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $writer Pflicht | XMLWriter | Die XMLWriter-Instanz, auf die geschrieben wird. In der prozeduralen Schreibweise wird dieses Objekt von xmlwriter_open_memory() oder xmlwriter_open_uri() zurückgegeben. |
Rückgabewert
true zurück, wenn das Attribut erfolgreich abgeschlossen wurde, oder false bei einem Fehler (z. B. wenn kein Attribut offen ist).Beispiele
Einfaches Attribut mit xmlwriter_start_attribute und xmlwriter_end_attribute
<?php
$writer = xmlwriter_open_memory();
xmlwriter_set_indent($writer, true);
xmlwriter_start_document($writer, '1.0', 'UTF-8');
xmlwriter_start_element($writer, 'product');
// Attribut manuell öffnen, Wert setzen und schließen
xmlwriter_start_attribute($writer, 'id');
xmlwriter_text($writer, '42');
xmlwriter_end_attribute($writer);
xmlwriter_text($writer, 'Beispielprodukt');
xmlwriter_end_element($writer);
xmlwriter_end_document($writer);
echo xmlwriter_output_memory($writer);
Namespace-Attribut mit xmlwriter_start_attribute_ns und xmlwriter_end_attribute
<?php
$writer = xmlwriter_open_memory();
xmlwriter_set_indent($writer, true);
xmlwriter_start_document($writer, '1.0', 'UTF-8');
xmlwriter_start_element_ns($writer, 'app', 'item', 'http://example.com/ns');
// Namespace-Attribut manuell öffnen
xmlwriter_start_attribute_ns($writer, 'app', 'status', 'http://example.com/ns');
xmlwriter_text($writer, 'active');
xmlwriter_end_attribute($writer);
xmlwriter_text($writer, 'Inhalt');
xmlwriter_end_element($writer);
xmlwriter_end_document($writer);
echo xmlwriter_output_memory($writer);
// Wichtig · Fallstricke
Reihenfolge beachten: xmlwriter_end_attribute() muss immer nach einem entsprechenden xmlwriter_start_attribute()-Aufruf folgen. Ein vergessener End-Aufruf führt zu ungültigem oder unvollständigem XML. Für einfache Fälle empfiehlt sich die Kurzform xmlwriter_write_attribute(), die alle drei Schritte in einem Aufruf zusammenfasst und so Fehler vermeidet.
In PHP 8.0 wurde der erste Parameter von einer resource-Ressource auf eine XMLWriter-Objektinstanz umgestellt. Älterer Code, der eine Ressource übergibt, muss angepasst werden.