Signatur
Beschreibung
xmlwriter_write_element_ns() ist die prozedurale Variante der Methode XMLWriter::writeElementNs() und erzeugt ein komplettes XML-Element inklusive öffnendem Tag, optionalem Textinhalt und schließendem Tag – alles mit Namensraum-Unterstützung. Das Element erhält dabei ein Präfix (z. B. soap) und eine zugehörige Namespace-URI (z. B. http://schemas.xmlsoap.org/soap/envelope/).
Die Funktion ist dann besonders nützlich, wenn ein einfaches Element ohne Kindelemente, aber mit Namespace-Deklaration erzeugt werden soll. Für komplexe Strukturen mit verschachtelten Kindelementen empfiehlt sich die Kombination aus xmlwriter_start_element_ns() und xmlwriter_end_element().
Wird null als $prefix übergeben, wird das Element ohne Präfix, aber mit einer Default-Namespace-Deklaration (xmlns="...") ausgegeben. Ist $content null oder leer, wird ein selbstschließendes Element erzeugt.
Die Funktion arbeitet mit dem übergebenen XMLWriter-Objekt und schreibt direkt in dessen internen Puffer; das Ergebnis kann anschließend mit xmlwriter_output_memory() oder xmlwriter_flush() abgerufen werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $writer Pflicht | XMLWriter | Die XMLWriter-Instanz, in deren Puffer das Element geschrieben werden soll. |
|
| $prefix Pflicht | ?string | Das Namespace-Präfix des Elements (z. B. "soap"). Wird null übergeben, erhält das Element kein Präfix und der Namespace wird als Default-Namespace deklariert. |
|
| $name Pflicht | string | Der lokale Name des XML-Elements (ohne Präfix), z. B. "Body". |
|
| $namespace Pflicht | ?string | Die Namespace-URI, die dem Präfix zugeordnet wird, z. B. "http://schemas.xmlsoap.org/soap/envelope/". Wird null übergeben, wird keine xmlns-Deklaration hinzugefügt. |
|
| $content | ?string | null | Der Textinhalt des Elements. Sonderzeichen werden automatisch als XML-Entities kodiert. Wird null übergeben, erzeugt die Funktion ein selbstschließendes Element. |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler (z. B. wenn der XMLWriter nicht korrekt initialisiert wurde).Beispiele
Einfaches Element mit Namensraum schreiben
<?php
$writer = xmlwriter_open_memory();
xmlwriter_set_indent($writer, true);
xmlwriter_set_indent_string($writer, ' ');
xmlwriter_start_document($writer, '1.0', 'UTF-8');
// Wurzelelement mit Namespace
xmlwriter_start_element_ns($writer, 'soap', 'Envelope', 'http://schemas.xmlsoap.org/soap/envelope/');
// Kindelement mit gleichem Namespace und Textinhalt
xmlwriter_write_element_ns(
$writer,
'soap',
'Body',
'http://schemas.xmlsoap.org/soap/envelope/',
'Hello World'
);
xmlwriter_end_element($writer); // </soap:Envelope>
xmlwriter_end_document($writer);
echo xmlwriter_output_memory($writer);
Selbstschließendes Element und Default-Namespace
<?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_ns($writer, 'atom', 'feed', 'http://www.w3.org/2005/Atom');
// Element mit Inhalt und Namespace
xmlwriter_write_element_ns(
$writer,
'atom',
'title',
'http://www.w3.org/2005/Atom',
'Mein RSS-Feed <Test>'
);
// Selbstschließendes Element (kein Inhalt)
xmlwriter_write_element_ns(
$writer,
'atom',
'updated',
'http://www.w3.org/2005/Atom',
null
);
xmlwriter_end_element($writer);
xmlwriter_end_document($writer);
echo xmlwriter_output_memory($writer);
// Wichtig · Fallstricke
Doppelte Namespace-Deklarationen: xmlwriter_write_element_ns() schreibt die xmlns-Deklaration direkt auf das erzeugte Element, auch wenn der Namespace bereits im Elternelement deklariert wurde. Um redundante Deklarationen zu vermeiden, kann stattdessen xmlwriter_start_element_ns() für das Wurzelelement und xmlwriter_write_element() (mit Präfix im Namen) für Kindelemente verwendet werden.
Sonderzeichen im Inhalt werden von der Funktion automatisch als XML-Entities kodiert (z. B. < wird zu <), sodass kein manuelles Escaping notwendig ist.
Ab PHP 8.0 ist der erste Parameter ein typisiertes XMLWriter-Objekt; in PHP 7 und früher war es eine resource.