Signatur
Beschreibung
xmlwriter_write_attribute() ist eine prozedurale Hilfsfunktion des XMLWriter-Moduls, die ein XML-Attribut mit Name und Wert in einem einzigen Aufruf in den internen Puffer des XMLWriter-Objekts schreibt. Sie kombiniert intern die Schritte von xmlwriter_start_attribute(), xmlwriter_text() und xmlwriter_end_attribute().
Die Funktion muss aufgerufen werden, nachdem ein Element mit xmlwriter_start_element() geöffnet wurde, aber bevor Textinhalt oder Kind-Elemente hinzugefügt werden. Sonderzeichen im Attributwert (z. B. <, >, & und Anführungszeichen) werden automatisch als XML-Entities escapt.
Seit PHP 8.0 kann XMLWriter auch objektorientiert verwendet werden; das prozedurale Äquivalent der Methode XMLWriter::writeAttribute() ist genau diese Funktion. Für Namespaced-Attribute (mit Präfix) steht xmlwriter_write_attribute_ns() zur Verfügung.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $writer Pflicht | XMLWriter | Die XMLWriter-Instanz, in deren Puffer das Attribut geschrieben werden soll. Wird mit xmlwriter_open_memory() oder xmlwriter_open_uri() erzeugt. |
|
| $name Pflicht | string | Der Name des Attributs. Muss ein gültiger XML-Name sein (z. B. class, id, href). |
|
| $value Pflicht | string | Der Wert des Attributs. Sonderzeichen werden automatisch als XML-Entities escapt. |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler (z. B. wenn kein Element geöffnet ist oder der Attributname ungültig ist).Beispiele
Einfaches HTML-Element mit Attribut erzeugen
<?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, 'a');
xmlwriter_write_attribute($writer, 'href', 'https://www.example.com');
xmlwriter_write_attribute($writer, 'class', 'link primary');
xmlwriter_text($writer, 'Zur Webseite');
xmlwriter_end_element($writer);
xmlwriter_end_document($writer);
echo xmlwriter_output_memory($writer);
Automatisches Escaping von Sonderzeichen im Attributwert
<?php
$writer = xmlwriter_open_memory();
xmlwriter_start_document($writer, '1.0', 'UTF-8');
xmlwriter_start_element($writer, 'input');
// Anführungszeichen und & im Wert werden automatisch escapt
xmlwriter_write_attribute($writer, 'value', 'Müller & Söhne "GmbH"');
xmlwriter_write_attribute($writer, 'type', 'text');
xmlwriter_end_element($writer);
xmlwriter_end_document($writer);
echo xmlwriter_output_memory($writer);
// Wichtig · Fallstricke
Reihenfolge beachten: Attribute müssen unmittelbar nach dem Öffnen eines Elements geschrieben werden. Sobald Textinhalt oder ein Kind-Element hinzugefügt wurde, kann kein Attribut mehr angehängt werden – der Aufruf schlägt dann fehl und gibt false zurück.
Gültige XML-Namen: Der Attributname muss den XML-Namensregeln entsprechen; ungültige Namen (z. B. mit Leerzeichen oder Sonderzeichen) führen zu einem Fehler. Für Attribute mit Namespace-Präfix (z. B. xml:lang) sollte xmlwriter_write_attribute_ns() verwendet werden.
OOP-Äquivalent: Ab PHP 8.0 lautet das objektorientierte Pendant $writer->writeAttribute($name, $value).