Start · Sprachen · PHP · Referenz · xmlwriter_end_attribute

xmlwriter_end_attribute

Funktion

Beendet ein zuvor mit <code>xmlwriter_start_attribute()</code> gestartetes XML-Attribut und schreibt dessen Wert in den Ausgabestream.

seit PHP 5.1.2 Kategorie: xml

Signatur

xmlwriter_end_attribute(XMLWriter $writer): bool

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

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

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);
<?xml version="1.0" encoding="UTF-8"?> <app:item xmlns:app="http://example.com/ns" app:status="active">Inhalt</app:item>

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