Start · Sprachen · PHP · Referenz · xmlwriter_set_indent

xmlwriter_set_indent

Funktion

Schaltet die automatische Einrückung der XML-Ausgabe eines <code>XMLWriter</code>-Objekts ein oder aus.

seit PHP 5.1.2 Kategorie: xml

Signatur

xmlwriter_set_indent(XMLWriter $writer, bool $enable): bool

Beschreibung

xmlwriter_set_indent steuert, ob der XMLWriter beim Erzeugen von XML-Ausgaben automatisch Einrückungen einfügt. Ist die Einrückung aktiviert, werden verschachtelte Elemente entsprechend ihrer Tiefe im Baum eingerückt, was die Lesbarkeit der erzeugten XML-Dokumente erheblich verbessert.

Die Funktion muss aufgerufen werden, bevor mit dem Schreiben von XML-Inhalten begonnen wird, da sie nur für nachfolgende Schreiboperationen wirksam ist. Zusätzlich kann mit xmlwriter_set_indent_string das konkrete Einrückungszeichen (z. B. Leerzeichen oder Tabulator) festgelegt werden.

Diese Funktion ist besonders nützlich, wenn das erzeugte XML für Menschen lesbar sein soll, etwa bei Konfigurations- oder Exportdateien. Für rein maschinell verarbeitete XML-Daten kann die Einrückung deaktiviert bleiben, um die Ausgabe kompakter zu halten.

Ab PHP 8.0 kann XMLWriter sowohl objektorientiert als auch prozedural verwendet werden. Der prozedurale Stil erwartet als erstes Argument eine XMLWriter-Instanz.

Parameter

Name Typ Default Beschreibung
$writer Pflicht XMLWriter Die XMLWriter-Instanz, auf der die Einrückung konfiguriert werden soll.
$enable Pflicht bool Gibt an, ob die automatische Einrückung aktiviert (true) oder deaktiviert (false) werden soll.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false bei einem Fehler.

Beispiele

Eingerücktes XML-Dokument erzeugen

<?php
$writer = new XMLWriter();
$writer->openMemory();

// Einrückung aktivieren
$writer->setIndent(true);
$writer->setIndentString('    '); // 4 Leerzeichen

$writer->startDocument('1.0', 'UTF-8');
$writer->startElement('bibliothek');

$writer->startElement('buch');
$writer->writeElement('titel', 'PHP Handbuch');
$writer->writeElement('autor', 'Max Mustermann');
$writer->endElement();

$writer->endElement();
$writer->endDocument();

echo $writer->outputMemory();
<?xml version="1.0" encoding="UTF-8"?> <bibliothek> <buch> <titel>PHP Handbuch</titel> <autor>Max Mustermann</autor> </buch> </bibliothek>

Prozeduraler Stil: kompaktes XML ohne Einrückung

<?php
$writer = xmlwriter_open_memory();

// Einrückung deaktiviert (Standard)
xmlwriter_set_indent($writer, false);

xmlwriter_start_document($writer, '1.0', 'UTF-8');
xmlwriter_start_element($writer, 'wurzel');
xmlwriter_write_element($writer, 'kind', 'Inhalt');
xmlwriter_end_element($writer);
xmlwriter_end_document($writer);

echo xmlwriter_output_memory($writer);
<?xml version="1.0" encoding="UTF-8"?> <wurzel><kind>Inhalt</kind></wurzel>

// Wichtig · Fallstricke

Die Einrückung muss vor dem ersten Schreibaufruf (z. B. startDocument oder startElement) gesetzt werden, damit sie vollständig wirksam ist. Ein nachträgliches Aktivieren kann zu uneinheitlichen Einrückungen führen.

Soll das Einrückungszeichen angepasst werden (Standard ist ein Leerzeichen), muss zusätzlich xmlwriter_set_indent_string bzw. XMLWriter::setIndentString aufgerufen werden.