Signatur
Beschreibung
xmlwriter_set_indent_string() legt fest, welche Zeichenkette der XMLWriter zur Einrückung von XML-Elementen nutzt. Typischerweise werden hier ein oder mehrere Leerzeichen oder ein Tabulator ("\t") übergeben. Die Funktion greift nur dann, wenn die Einrückung zuvor mit xmlwriter_set_indent() aktiviert wurde.
Ohne explizite Einrückung erzeugt XMLWriter kompakten, nicht formatierten XML-Code, der schwer lesbar ist. Für die Entwicklung oder bei Ausgaben, die Menschen lesen sollen, empfiehlt es sich, eine sinnvolle Einrückungszeichenkette zu setzen.
Die Funktion kann sowohl prozedural (mit einem XMLWriter-Ressource- bzw. Objekt-Parameter) als auch objektorientiert als Methode $writer->setIndentString() aufgerufen werden.
Soll die Einrückung geändert werden, muss xmlwriter_set_indent_string() vor dem Beginn der eigentlichen Ausgabe aufgerufen werden, da nachträglich geschriebene Knoten die alte Einrückung behalten.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $writer Pflicht | XMLWriter | Die XMLWriter-Instanz, auf der die Einrückungszeichenkette gesetzt werden soll. |
|
| $indentString Pflicht | string | Die Zeichenkette, die für jeden Einrückungsschritt verwendet wird, z. B. " " (zwei Leerzeichen) oder "\t" (Tabulator). |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler.Beispiele
XML mit Leerzeichen-Einrückung erzeugen
<?php
$writer = new XMLWriter();
$writer->openMemory();
// Einrückung aktivieren
$writer->setIndent(true);
// Zwei Leerzeichen als Einrückungszeichenkette setzen
$writer->setIndentString(' ');
$writer->startDocument('1.0', 'UTF-8');
$writer->startElement('library');
$writer->startElement('book');
$writer->writeElement('title', 'PHP-Handbuch');
$writer->writeElement('author', 'Max Mustermann');
$writer->endElement(); // book
$writer->endElement(); // library
$writer->endDocument();
echo $writer->outputMemory();
XML mit Tabulator-Einrückung (prozedurale Schreibweise)
<?php
$writer = xmlwriter_open_memory();
xmlwriter_set_indent($writer, true);
xmlwriter_set_indent_string($writer, "\t");
xmlwriter_start_document($writer, '1.0', 'UTF-8');
xmlwriter_start_element($writer, 'config');
xmlwriter_start_element($writer, 'database');
xmlwriter_write_element($writer, 'host', 'localhost');
xmlwriter_write_element($writer, 'port', '3306');
xmlwriter_end_element($writer); // database
xmlwriter_end_element($writer); // config
xmlwriter_end_document($writer);
echo xmlwriter_output_memory($writer);
// Wichtig · Fallstricke
Wichtig: xmlwriter_set_indent_string() hat keine Wirkung, wenn xmlwriter_set_indent() nicht zuvor mit true aufgerufen wurde. Beide Aufrufe müssen vor dem ersten Schreiben von Elementen erfolgen, sonst wird die Einrückung möglicherweise nicht konsistent angewendet.
Es gibt keine Validierung der übergebenen Zeichenkette – technisch ist auch eine leere Zeichenkette oder eine Zeichenkette mit beliebigen Zeichen erlaubt. Für maximale Kompatibilität sollten jedoch ausschließlich Leerzeichen oder Tabulatoren verwendet werden.