Start · Sprachen · PHP · Referenz · xmlwriter_text

xmlwriter_text

Funktion

Schreibt einen Textknoten in das aktuelle XML-Element des <code>XMLWriter</code>-Streams.

seit PHP 5.1.2 Kategorie: xml

Signatur

xmlwriter_text(XMLWriter $writer, string $content): bool

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 &lt;), 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

Typ
bool
Beschreibung
Gibt 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);
<?xml version="1.0" encoding="UTF-8"?> <nachricht>Hallo, Welt!</nachricht>

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);
<?xml version="1.0" encoding="UTF-8"?> <preis>5 € &lt; 10 € &amp; &gt; 2 €</preis>

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);
<?xml version="1.0" encoding="UTF-8"?> <channel> <item> <title>PHP 8.4 erschienen</title> <description>Die neue Version bringt viele Verbesserungen &amp; neue Features.</description> </item> <item> <title>Sicherheitslücke in OpenSSL &lt;3.0</title> <description>Patch verfügbar.</description> </item> </channel>

// 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. &amp; 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.