Signatur
Beschreibung
xmlwriter_text fügt einen einfachen Textinhalt in das aktuell geöffnete Element des XML-Dokuments ein. Der Text wird dabei automatisch als Entitäten kodiert (z. B. < wird zu <), sodass gültiges XML erzeugt wird und keine manuelle Escapierung notwendig ist.
Die Funktion eignet sich überall dort, wo der Inhalt eines Elements aus reinem Text besteht – beispielsweise bei <title>-, <description>- oder Datenelementen in RSS-Feeds, SOAP-Nachrichten oder beliebigen XML-Dokumenten. Sie ist Teil der prozeduralen Schnittstelle von XMLWriter; das objektorientierte Äquivalent ist XMLWriter::text().
Soll der Text ohne Entitätskodierung geschrieben werden (z. B. bereits vorbereitete Markup-Fragmente), sollte stattdessen xmlwriter_write_raw verwendet werden – jedoch nur, wenn der Inhalt garantiert wohlgeformt ist, da sonst ungültiges XML entstehen kann.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $writer Pflicht | XMLWriter | Die XMLWriter-Instanz, in die geschrieben werden soll. Sie wird zuvor mit xmlwriter_open_memory oder xmlwriter_open_uri erzeugt. |
|
| $content Pflicht | string | Der Textinhalt, der in das aktuelle Element geschrieben wird. Sonderzeichen wie <, > und & werden automatisch als XML-Entitäten kodiert. |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler (z. B. wenn kein Element geöffnet ist oder der Writer nicht initialisiert wurde).Beispiele
Einfaches XML-Element mit Textinhalt erzeugen
<?php
$writer = xmlwriter_open_memory();
xmlwriter_set_indent($writer, true);
xmlwriter_start_document($writer, '1.0', 'UTF-8');
xmlwriter_start_element($writer, 'nachricht');
xmlwriter_text($writer, 'Hallo, Welt!');
xmlwriter_end_element($writer);
xmlwriter_end_document($writer);
echo xmlwriter_output_memory($writer);
Automatische Entitätskodierung bei Sonderzeichen
<?php
$writer = xmlwriter_open_memory();
xmlwriter_set_indent($writer, true);
xmlwriter_start_document($writer, '1.0', 'UTF-8');
xmlwriter_start_element($writer, 'preis');
// Sonderzeichen werden automatisch kodiert
xmlwriter_text($writer, '5 € < 10 € & > 2 €');
xmlwriter_end_element($writer);
xmlwriter_end_document($writer);
echo xmlwriter_output_memory($writer);
RSS-Feed: Titel und Beschreibung mit Textinhalten befüllen
<?php
$items = [
['titel' => 'PHP 8.4 erschienen', 'beschreibung' => 'Die neue Version bringt viele Verbesserungen & neue Features.'],
['titel' => 'Sicherheitslücke in OpenSSL <3.0', 'beschreibung' => 'Patch verfügbar.'],
];
$writer = xmlwriter_open_memory();
xmlwriter_set_indent($writer, true);
xmlwriter_start_document($writer, '1.0', 'UTF-8');
xmlwriter_start_element($writer, 'channel');
foreach ($items as $item) {
xmlwriter_start_element($writer, 'item');
xmlwriter_start_element($writer, 'title');
xmlwriter_text($writer, $item['titel']);
xmlwriter_end_element($writer);
xmlwriter_start_element($writer, 'description');
xmlwriter_text($writer, $item['beschreibung']);
xmlwriter_end_element($writer);
xmlwriter_end_element($writer); // item
}
xmlwriter_end_element($writer); // channel
xmlwriter_end_document($writer);
echo xmlwriter_output_memory($writer);
// Wichtig · Fallstricke
Kein manuelles Escaping notwendig: xmlwriter_text kodiert alle XML-Sonderzeichen automatisch. Ein manuelles htmlspecialchars o. Ä. vor dem Aufruf würde zu doppelter Kodierung führen (z. B. & statt &).
Reihenfolge beachten: Die Funktion muss zwischen einem xmlwriter_start_element- und dem zugehörigen xmlwriter_end_element-Aufruf stehen. Wird kein Element geöffnet oder bereits ein Attributschreibvorgang eingeleitet, gibt die Funktion false zurück.
Rohe Ausgabe: Soll unkodierter Text (z. B. eingebettetes Markup) eingefügt werden, verwende xmlwriter_write_raw – jedoch nur mit vertrauenswürdigen Daten, da dies zu ungültigem XML führen kann.