Start · Sprachen · PHP · Referenz · xmlwriter_start_document

xmlwriter_start_document

Funktion

Beginnt ein XML-Dokument und schreibt die XML-Deklaration (<code>&lt;?xml version="1.0" ... ?&gt;</code>) in den Ausgabepuffer.

seit PHP 5.1.2 Kategorie: xml

Signatur

xmlwriter_start_document(XMLWriter $writer, ?string $version = '1.0', ?string $encoding = null, ?string $standalone = null): bool

Beschreibung

xmlwriter_start_document() eröffnet ein neues XML-Dokument und erzeugt den XML-Prolog, also die Verarbeitungsanweisung <?xml version="1.0" encoding="UTF-8" ?>. Sie muss in der Regel als erster Schreibaufruf erfolgen, bevor Elemente, Attribute oder andere Knoten hinzugefügt werden.

Die Funktion arbeitet im prozeduralen Stil mit einem XMLWriter-Objekt, das zuvor mit xmlwriter_open_memory() oder xmlwriter_open_uri() erstellt wurde. In der objektorientierten Variante existiert die entsprechende Methode XMLWriter::startDocument().

Mit den optionalen Parametern lassen sich die XML-Version, die Zeichenkodierung sowie die Standalone-Deklaration festlegen. Diese Angaben landen direkt im Prolog und haben Einfluss darauf, wie Parser und Browser das Dokument interpretieren.

Nach dem Erzeugen des Dokument-Starts sollten alle geöffneten Elemente und am Ende das Dokument selbst mit xmlwriter_end_document() geschlossen werden, um wohlgeformtes XML zu erhalten.

Parameter

Name Typ Default Beschreibung
$writer Pflicht XMLWriter Die XMLWriter-Instanz, in die geschrieben wird. Wird mit xmlwriter_open_memory() oder xmlwriter_open_uri() erstellt.
$version ?string 1.0 Die XML-Version, die im Prolog angegeben wird. In der Praxis wird fast immer '1.0' verwendet. null lässt die Angabe weg.
$encoding ?string Die Zeichenkodierung des Dokuments, z. B. 'UTF-8' oder 'ISO-8859-1'. Wird null übergeben, erscheint kein encoding-Attribut im Prolog.
$standalone ?string Gibt an, ob das Dokument standalone ist. Gültige Werte sind 'yes' oder 'no'. Bei null wird die Standalone-Deklaration weggelassen.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn der XML-Prolog erfolgreich geschrieben wurde, andernfalls false.

Beispiele

Einfaches XML-Dokument mit Prolog erstellen

<?php
$writer = xmlwriter_open_memory();
xmlwriter_set_indent($writer, true);
xmlwriter_set_indent_string($writer, '  ');

// Dokument-Prolog mit Version und Kodierung
xmlwriter_start_document($writer, '1.0', 'UTF-8');

xmlwriter_start_element($writer, 'root');
xmlwriter_write_element($writer, 'message', 'Hallo Welt');
xmlwriter_end_element($writer);

xmlwriter_end_document($writer);

echo xmlwriter_output_memory($writer);
<?xml version="1.0" encoding="UTF-8"?> <root> <message>Hallo Welt</message> </root>

XML-Dokument mit Standalone-Deklaration in Datei schreiben

<?php
$writer = xmlwriter_open_uri('/tmp/ausgabe.xml');
xmlwriter_set_indent($writer, true);

// Prolog mit Version, Kodierung und standalone="yes"
xmlwriter_start_document($writer, '1.0', 'UTF-8', 'yes');

xmlwriter_start_element($writer, 'katalog');

xmlwriter_start_element($writer, 'produkt');
xmlwriter_write_attribute($writer, 'id', '42');
xmlwriter_write_element($writer, 'name', 'PHP-Buch');
xmlwriter_end_element($writer);

xmlwriter_end_element($writer);
xmlwriter_end_document($writer);

echo 'XML-Datei erfolgreich geschrieben.';
XML-Datei erfolgreich geschrieben.

// Wichtig · Fallstricke

Reihenfolge beachten: xmlwriter_start_document() muss vor allen anderen Schreiboperationen aufgerufen werden. Ein nachträglicher Aufruf führt zu einem ungültigen XML-Dokument.

Kodierung und tatsächliche Daten: Die Angabe von encoding im Prolog deklariert lediglich, welche Kodierung verwendet wird – PHP stellt nicht sicher, dass die tatsächlich geschriebenen Daten dieser Kodierung entsprechen. Es liegt in der Verantwortung des Entwicklers, dass alle Zeichenketten korrekt kodiert sind, z. B. durch mb_convert_encoding().

OOP-Äquivalent: Im objektorientierten Stil lautet die entsprechende Methode XMLWriter::startDocument() mit identischen Parametern.