Start · Sprachen · PHP · Referenz · xmlwriter_write_attribute

xmlwriter_write_attribute

Funktion

Schreibt ein vollständiges XML-Attribut (Name und Wert) in einem Schritt in den <code>XMLWriter</code>-Puffer.

seit PHP 5.1.2 Kategorie: xml

Signatur

xmlwriter_write_attribute(XMLWriter $writer, string $name, string $value): bool

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

Typ
bool
Beschreibung
Gibt 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);
<?xml version="1.0" encoding="UTF-8"?> <a href="https://www.example.com" class="link primary">Zur Webseite</a>

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);
<?xml version="1.0" encoding="UTF-8"?> <input value="Müller &amp; Söhne &quot;GmbH&quot;" type="text"/>

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