Signatur
Beschreibung
xmlwriter_write_raw() fügt den übergebenen String-Inhalt unverändert in den aktuellen XML-Ausgabe-Puffer ein. Im Gegensatz zu Funktionen wie xmlwriter_write_element() oder xmlwriter_text() werden Sonderzeichen wie <, > oder & nicht automatisch escapet. Dies ermöglicht das direkte Einbetten von bereits gültigem XML-Markup.
Typische Anwendungsfälle sind das Einfügen von vorformatiertem XML, CDATA-Abschnitten, Verarbeitungsanweisungen oder das Zusammenführen von XML-Fragmenten aus verschiedenen Quellen, die bereits wohlgeformt sind und nicht nochmals bearbeitet werden sollen.
Die Funktion kann sowohl prozedural (mit dem XMLWriter-Ressource- bzw. Objekt-Parameter) als auch objektorientiert über $writer->writeRaw($content) verwendet werden. Beide Varianten liefern dasselbe Verhalten.
Da kein Escaping stattfindet, liegt die Verantwortung für die Wohlgeformtheit des eingebetteten Inhalts vollständig beim Entwickler. Ungültiges oder schlecht geformtes XML kann das gesamte Dokument beschädigen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $writer Pflicht | XMLWriter | Die XMLWriter-Instanz, in deren Puffer der rohe Inhalt geschrieben wird. |
|
| $content Pflicht | string | Der rohe XML-Inhalt, der unverändert und ohne Escaping in den Ausgabe-Puffer eingefügt wird. |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler (z. B. wenn kein gültiger Writer übergeben wurde).Beispiele
Einfügen eines vorformatierten XML-Fragments
<?php
$writer = new XMLWriter();
$writer->openMemory();
$writer->startDocument('1.0', 'UTF-8');
$writer->startElement('root');
// Rohes, bereits gültiges XML-Fragment direkt einfügen
$writer->writeRaw('<child id="1"><name>Max Mustermann</name></child>');
$writer->endElement();
$writer->endDocument();
echo $writer->outputMemory();
Kombination mit CDATA-ähnlichem Inhalt und normalen Elementen
<?php
$writer = new XMLWriter();
$writer->openMemory();
$writer->startDocument('1.0', 'UTF-8');
$writer->startElement('feed');
// Normales Element
$writer->writeElement('title', 'Mein Blog');
// Rohes XML-Fragment mit vorberechneter Struktur
$rawEntry = '<entry><id>42</id><content>Hallo & Willkommen</content></entry>';
$writer->writeRaw($rawEntry);
$writer->endElement();
$writer->endDocument();
echo $writer->outputMemory();
// Wichtig · Fallstricke
Sicherheitshinweis: Da xmlwriter_write_raw() keinerlei Escaping durchführt, dürfen niemals ungeprüfte Benutzereingaben direkt übergeben werden. Nicht validierter Inhalt kann zu XML-Injection führen, bei dem ein Angreifer die Struktur des Dokuments manipulieren oder ungültiges XML erzeugen kann.
Wenn der übergebene Inhalt nicht wohlgeformt ist (z. B. nicht geschlossene Tags), entsteht ein ungültiges XML-Dokument. Das Parsen oder Weiterverarbeiten dieses Dokuments schlägt dann fehl. Es empfiehlt sich daher, eingebettete Fragmente vorab mit einem XML-Parser wie DOMDocument::loadXML() zu validieren.
Im objektorientierten Stil steht die Methode als XMLWriter::writeRaw(string $content): bool zur Verfügung und verhält sich identisch zur prozeduralen Variante.