Zum Inhalt springen

XML formatieren

Einen XML-Block in etwas Lesbares einrücken oder wieder minifizieren. Kommentare, CDATA-Abschnitte und Namespaces bleiben unversehrt. Es wird nichts gespeichert.

  • Nie gespeichert
  • Keine Warteschlange, kein Warten
  • Ohne Anmeldung, ohne Wasserzeichen
Einrückung
Formatiert

Das formatierte XML erscheint hier.

So funktioniert’s

1

XML einfügen

Oder eine .xml-, .svg-, .rss- oder .xsd-Datei ablegen. Sie wird nie gespeichert.

2

Einrückung wählen

Zwei Leerzeichen, vier, Tabs oder minifiziert auf eine Zeile.

3

Kopieren oder herunterladen

Ist das XML fehlerhaft, erhalten Sie statt eines Ergebnisses Zeile und Spalte des Fehlers.

Warum das Neueinrücken von XML riskanter ist, als es aussieht

Leerraum ist in XML standardmäßig bedeutsam – und genau darüber stolpern viele. Anders als bei JSON, wo die Formatierung keine Rolle spielt, muss ein XML-Parser die Leerzeichen und Zeilenumbrüche zwischen Elementen als Textinhalt melden; erst das Schema, sofern es eines gibt, legt fest, dass sie ignoriert werden dürfen. Neues Einrücken verändert ein Dokument also tatsächlich. Bei den meisten Konfigurations- und Datendateien stört das niemanden, bei Dokumenten mit gemischtem Inhalt – Text und Elemente nebeneinander, wie in XHTML oder DocBook – kann es jedoch verändern, was das Dokument aussagt.

Beim Formatieren bleibt hier deshalb unangetastet, was unangetastet bleiben muss. Ein Element mit xml:space="preserve" behält seinen Inhalt genau so, wie er geschrieben ist, denn genau dafür gibt es dieses Attribut. CDATA-Abschnitte werden unverändert durchgereicht: Sie enthalten Text, der nicht interpretiert werden darf, und eine Umformatierung darin würde ihn beschädigen. Entitätsreferenzen bleiben Referenzen und werden nicht in die Zeichen aufgelöst, für die sie stehen.

Namespaces bleiben genau so erhalten, wie sie geschrieben sind – Präfixe, Deklarationen und die Elemente, an die sie gebunden sind. Das klingt selbstverständlich, ist es aber nicht: Ein Formatierer, der Präfixe normalisiert oder Deklarationen dorthin verschiebt, wo sie seiner Meinung nach hingehören, erzeugt ein Dokument, das technisch gleichwertig ist und dennoch an Tools scheitert, die auf wörtliche Präfixe prüfen. Auch die Reihenfolge der Attribute bleibt erhalten, obwohl sie für XML bedeutungslos ist – aus demselben Grund: Ein Diff gegen die vorherige Version ist mehr wert als Ordnung.

Beim Formatieren wird die Wohlgeformtheit geprüft: jedes Tag geschlossen, korrekt verschachtelt, genau ein Wurzelelement, zulässige Zeichen, korrekt maskierte kaufmännische Und-Zeichen und spitze Klammern. Das ist die niedrigere der beiden Hürden von XML. Ein Dokument kann vollkommen wohlgeformt und trotzdem gegen die DTD oder das Schema ungültig sein, dem es unterliegt – und das zeigt keine Formatierung der Welt.

Wenn Sie etwas anderes brauchen

xmllint --format in.xml erledigt dasselbe auf der Kommandozeile und ist auf den meisten Unix-Systemen bereits installiert; xmlstarlet fo --indent-tab bietet mehr Kontrolle über die Einrückung selbst. Beide verarbeiten Dateien, die weit größer sind, als eine Webseite im Speicher halten kann.

Wenn das Dokument verglichen, signiert oder in kanonischer Form gespeichert werden soll, ist Formatieren grundsätzlich der falsche Schritt. Canonical XML – xmllint --c14n – erzeugt die eine normalisierte Form, auf die sich zwei gleichwertige Dokumente beide zurückführen lassen, und genau darauf beruhen digitale Signaturen über XML. Ein signiertes Dokument hübsch zu formatieren, macht seine Signatur ungültig – und das ist die teuerste Art, das zu lernen.

Häufig gestellte Fragen

Wird mein XML irgendwo gespeichert?

Nein. Es gibt keinen Serveraufruf und keine Protokollierung, und es wird nichts gespeichert. Sie können nach dem Laden der Seite die Internetverbindung trennen, und sie funktioniert weiter. Das ist hier wichtiger, als es aussieht: Was Menschen in einen Online-Formatierer einfügen, sind API-Antworten, Konfigurationsdateien und Fehlermeldungen – und die enthalten regelmäßig Tokens, Kundendaten und interne Hostnamen.

Was bleibt beim Formatieren erhalten?

Kommentare, CDATA-Abschnitte, Verarbeitungsanweisungen, die XML-Deklaration und alle Namespace-Präfixe. Die Reihenfolge der Attribute bleibt wie geschrieben. Ein Element, das nur Text enthält, bleibt auf einer Zeile, denn <title>Hallo</title> auf drei Zeilen zu verteilen, ist nicht schöner – und in einem Dokument mit gemischtem Inhalt würde es verändern, was der Text tatsächlich aussagt.

Verändert das Einrücken die Bedeutung meines XML?

In einem Element, das nur andere Elemente enthält, nicht. XML kennt aber keine allgemeine Regel, nach der Leerraum bedeutungslos ist – bei gemischtem Inhalt, wo Text und Elemente nebeneinanderstehen, IST hinzugefügter Leerraum Teil des Textes. Deshalb bleiben reine Textelemente hier auf einer Zeile, statt aufgeteilt zu werden. Hat Ihr Dokument echten gemischten Inhalt und kommt es dabei auf Leerraum an, ist Minifizieren die sicherere Wahl.

Funktioniert es mit HTML?

Nur, wenn das HTML wohlgeformtes XML ist – was bei den meisten echten HTML-Seiten nicht der Fall ist. Nicht geschlossene <br>-, <img>- und <li>-Tags, Attribute ohne Anführungszeichen und einzelne kaufmännische Und-Zeichen sind in HTML erlaubt und in XML allesamt ungültig. Der Parser hier ist ein strenger XML-Parser; er meldet so etwas als Fehler, statt zu raten. XHTML und SVG lassen sich einwandfrei formatieren.

Und SVG?

Ja – SVG ist XML, und so lässt sich eine minifizierte SVG-Datei gut lesen. Pfade, Verläufe und eingebettete Stile bleiben unverändert; nur der Leerraum zwischen den Elementen verschiebt sich.

Gibt es eine Größenbegrenzung?

Den verfügbaren Arbeitsspeicher, keine von uns gesetzte Grenze. Dokumente mit einigen Megabyte werden sofort formatiert; sehr große stoßen daran, wie viel auf einmal gehalten werden kann – nicht an etwas auf unserer Seite.

Gut zu wissen: Nur Wohlgeformtheit. Das Dokument wird auf ausgeglichene Tags, korrekte Verschachtelung und zulässige Zeichen geprüft und neu eingerückt – eine DTD oder XSD wird jedoch weder abgerufen noch angewendet. Eine Datei kann sich also sauber formatieren lassen und trotzdem gegen ihr Schema ungültig sein. Namespaces bleiben genau so erhalten, wie sie geschrieben sind.

Dieses Tool auf Ihrer Website einbinden

Kostenlos für jeden Blog, jede Kursseite und jeden Hilfeartikel. Fügen Sie ein einziges Snippet ein, und Ihre Besucher können das Tool direkt auf Ihrer Seite nutzen.