Start · Sprachen · PHP · Referenz · xmlwriter_write_element

xmlwriter_write_element

Funktion

Schreibt ein vollständiges XML-Element mit optionalem Textinhalt in einem einzigen Aufruf.

seit PHP 5.1.2 Kategorie: xml

Signatur

xmlwriter_write_element(XMLWriter $writer, string $name, ?string $content = null): bool

Beschreibung

xmlwriter_write_element() erzeugt ein komplettes XML-Element bestehend aus öffnendem Tag, optionalem Textinhalt und schließendem Tag. Die Funktion kombiniert also xmlwriter_start_element(), xmlwriter_text() und xmlwriter_end_element() in einem einzigen Schritt.

Der Parameter $content wird automatisch korrekt als XML-Text escaped, d. h. Sonderzeichen wie <, > und & werden in ihre entsprechenden Entities umgewandelt. Wenn $content null oder ein leerer String ist, wird ein selbstschließendes Element (<tag/>) bzw. ein leeres Element erzeugt.

Diese Funktion ist besonders nützlich beim Aufbau von XML-Dokumenten, wenn ein Element keinen weiteren Kind-Elemente enthält, sondern nur einfachen Textinhalt aufweist – etwa bei Pflichtfeldern in einer XML-Konfiguration oder bei einfachen Datenelementen in einem Exportformat.

Die prozedurale Variante xmlwriter_write_element() arbeitet mit einer XMLWriter-Instanz, die zuvor mit xmlwriter_open_memory() oder xmlwriter_open_uri() erstellt wurde. Ab PHP 8.0 wird XMLWriter als Objekt übergeben; in älteren Versionen war es eine Ressource.

Parameter

Name Typ Default Beschreibung
$writer Pflicht XMLWriter Die XMLWriter-Instanz, in die das Element geschrieben wird.
$name Pflicht string Der lokale Name des zu schreibenden XML-Elements (ohne Namespace-Präfix). Muss ein gültiger XML-Bezeichner sein.
$content ?string null Der Textinhalt des Elements. Sonderzeichen werden automatisch escaped. Bei null oder leerem String wird ein leeres Element geschrieben.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn das Element erfolgreich geschrieben wurde, andernfalls false (z. B. bei einem ungültigen Element-Namen).

Beispiele

Einfaches XML-Element schreiben

<?php
$writer = xmlwriter_open_memory();
xmlwriter_set_indent($writer, true);
xmlwriter_start_document($writer, '1.0', 'UTF-8');
xmlwriter_start_element($writer, 'person');
xmlwriter_write_element($writer, 'vorname', 'Max');
xmlwriter_write_element($writer, 'nachname', 'Mustermann');
xmlwriter_write_element($writer, 'alter', '30');
xmlwriter_end_element($writer);
xmlwriter_end_document($writer);
echo xmlwriter_output_memory($writer);
<?xml version="1.0" encoding="UTF-8"?> <person> <vorname>Max</vorname> <nachname>Mustermann</nachname> <alter>30</alter> </person>

Sonderzeichen werden automatisch escaped

<?php
$writer = xmlwriter_open_memory();
xmlwriter_start_document($writer, '1.0', 'UTF-8');
xmlwriter_start_element($writer, 'daten');
// Sonderzeichen wie <, > und & werden automatisch korrekt maskiert
xmlwriter_write_element($writer, 'beschreibung', 'Preis < 100 & Rabatt > 10%');
xmlwriter_end_element($writer);
xmlwriter_end_document($writer);
echo xmlwriter_output_memory($writer);
<?xml version="1.0" encoding="UTF-8"?> <daten><beschreibung>Preis &lt; 100 &amp; Rabatt &gt; 10%</beschreibung></daten>

Leeres Element ohne Inhalt

<?php
$writer = xmlwriter_open_memory();
xmlwriter_start_document($writer, '1.0', 'UTF-8');
xmlwriter_start_element($writer, 'config');
// null ergibt ein selbstschließendes Element
xmlwriter_write_element($writer, 'leer', null);
xmlwriter_end_element($writer);
xmlwriter_end_document($writer);
echo xmlwriter_output_memory($writer);
<?xml version="1.0" encoding="UTF-8"?> <config><leer/></config>

// Wichtig · Fallstricke

Namespace-Unterstützung: Soll das Element einem Namespace angehören, muss stattdessen xmlwriter_write_element_ns() verwendet werden, das zusätzlich Präfix und Namespace-URI akzeptiert.

Nur für einfache Textelemente: Diese Funktion eignet sich nur für Elemente mit reinem Textinhalt. Sollen Kind-Elemente, Attribute oder gemischter Inhalt geschrieben werden, müssen xmlwriter_start_element(), die jeweiligen Schreib-Funktionen und xmlwriter_end_element() separat aufgerufen werden.

Ressource vs. Objekt: Vor PHP 8.0 war der erste Parameter eine Ressource vom Typ resource. Ab PHP 8.0 ist es eine XMLWriter-Objektinstanz. Der prozedurale Stil bleibt aber weiterhin verfügbar.