XML-Formatierer & Minifier
FormatierungXML mit fast-xml-parser verschönern oder komprimieren. Normalisiert Einrückung, Attribute und selbstschließende Tags. Reine XML-Verarbeitung — keine Formatkonvertierung.
Remote-URLs werden nicht abgerufen; fügen Sie Ihr JSON direkt ein.
Auf dieser Seite
Was ist ein XML-Formatierer?#
Ein XML-Formatierer bringt ein Dokument, das seine Struktur verloren hat, wieder in Form — eine SOAP-Antwort, die auf eine Zeile gekippt wurde, ein RSS-Feed, der durch einen Proxy geschickt wurde, der den Whitespace kollabierte, oder eine Konfigurationsdatei, die in einem Textfeld bearbeitet wurde, das keine Einrückung erhalten hat — und rückt sie neu ein, sodass die Element-Hierarchie sichtbar wird. Das Gegenteil, das Minimieren, streicht jedes Byte Whitespace zwischen den Tags, damit das Dokument für den Transport so klein wie möglich wird.
Was das Round-Tripping von XML schwerer macht, als es aussieht, ist, dass ein naives Suchen-und-Ersetzen auf < und > Informationen zerstört. Die Reihenfolge der Elemente, die <?xml?>-Deklaration, Kommentare, Verarbeitungsanweisungen wie <?xml-stylesheet?>, die Attributreihenfolge und der Unterschied zwischen <a></a> und <a/> tragen alle Bedeutung. Diese Seite verwendet fast-xml-parser im preserve-order-Modus, der das Dokument in einen geordneten Baum parst und ihn originalgetreu wieder aufbaut — Formatieren ist also eine normalisierte Ansicht Ihres Dokuments, kein neu sortiertes. Darum unterscheidet sich dieses Werkzeug auch vom JSON/XML-Konverter: Es betreibt reines XML-zu-XML-Round-Tripping und ändert nie das Datenformat.
Verwendung#
- Fügen Sie Ihr XML in die Eingabe-Fläche links ein. Der Platzhalter zeigt ein minimales
<?xml?>-Dokument, falls Sie einen Ausgangspunkt brauchen, oder klicken Sie auf Beispiel. - Wählen Sie eine Modus-Schaltfläche auf der Werkzeugleiste:
- Formatieren — parsen und dann mit Einrückung und Zeilenumbrüchen neu aufbauen. Leere Elemente kollabieren zur selbstschließenden Form (
<a></a>wird zu<a/>), Attribute bleiben erhalten, Kommentare und die Deklaration überleben. - Minimieren — parsen und dann als einzelne kompakte Zeile ohne Whitespace zwischen den Tags und ohne abschließenden Zeilenumbruch neu aufbauen.
- Formatieren — parsen und dann mit Einrückung und Zeilenumbrüchen neu aufbauen. Leere Elemente kollabieren zur selbstschließenden Form (
- Wählen Sie im Modus Formatieren eine Einrückung: 2, 4 oder Tabulator.
- Lesen Sie das Ergebnis in der Ausgabe-Fläche. Die Kopfzeile zeigt die Ausgabegröße in Zeichen; verwenden Sie Kopieren, um es zu übernehmen. Leeren setzt beide Flächen zurück.
Wenn Ihre Eingabe nicht wohlggeformt ist — ein nicht geschlossenes Tag, ein verwaistes &, das & sein sollte — meldet die Statusleiste den Fehler mit einer best-effort-Zeile und -Spalte, sodass Sie das Problem finden können, statt auf eine leere Ausgabe zu starren.
Eckpunkte#
- Originalgetreues Round-Trip. Das Parsen mit preserve-order erhält die Dokumentreihenfolge, die
<?xml?>-Deklaration, Kommentare und Verarbeitungsanweisungen durch den Zyklus aus Formatieren/Minimieren. - Beide Modi teilen sich einen Parser. Formatieren und Minimieren parsen identisch; sie unterscheiden sich nur darin, wie der Builder den Text ausgibt. Wenn also Minimieren gelingt, gelingt auch Formatieren und umgekehrt.
- Normalisierung selbstschließender Tags. Leere Elemente wie
<a></a>kollabieren zu<a/>, der kanonischen Kompaktform, die beim Diffen Whitespace-Unterschiede offensichtlich macht. - Werte bleiben Strings. Der Parser ist mit
parseTagValue: falsekonfiguriert, sodass ein Text-Knotentrueder String"true"bleibt und007zu"007". Keine stille Typumwandlung, die Sie auf dem Rückweg überrascht. - Große Eingaben außerhalb des Main-Threads. Dokumente, die größer als 1 MB sind, werden durch einen Web Worker geleitet, damit die Seite beim Parsen ansprechend bleibt. Kleinere Eingaben laufen inline.
- Streng clientseitig. Der Parser ist in die Seite gebündelt; Ihr XML verlässt niemals den Browser.
Konkretes Beispiel#
Ein kleines Konfigurationsdokument, das auf zwei Zeilen zusammengequetscht wurde:
Eingabe:
<?xml version="1.0"?><config><server host="example.com" port="443"/><feature name="cache"/><feature name="logs"></feature></config>
Klicken Sie auf Formatieren mit 2 Leerzeichen:
<?xml version="1.0"?>
<config>
<server host="example.com" port="443"/>
<feature name="cache"/>
<feature name="logs"/>
</config>
Zwei Dinge stechen hervor. Die <?xml version="1.0"?>-Deklaration hat den Round-Trip oben im Dokument überstanden. Und sowohl <feature name="logs"></feature> als auch das bereits selbstschließende <feature name="cache"/> erscheinen nun als <feature name="logs"/> — leere Elemente wurden auf die selbstschließende Form normalisiert, sodass die beiden Features mit derselben Gestalt auch gleich aussehen. Klicken Sie auf Minimieren auf die ursprüngliche Eingabe und Sie erhalten die Transport-Form:
<?xml version="1.0"?><config><server host="example.com" port="443"/><feature name="cache"/><feature name="logs"/></config>
Jedes Byte dekorativen Whitespace ist verschwunden, aber die Attributreihenfolge auf <server> ist unangetastet und die Deklaration steht noch da.
FAQ#
Was ist der Unterschied zwischen diesem Werkzeug und dem JSON/XML-Konverter?#
Dieses Werkzeug ist XML rein, XML raus — es verschönert oder minimiert ein XML-Dokument und gibt Ihnen XML zurück. Der JSON/XML-Konverter auf dieser Seite übersetzt zwischen den beiden Formaten und wandelt XML in einen JSON-Objektbaum um oder umgekehrt. Verwenden Sie diese Seite, wenn Sie dasselbe Format haben wollen, nur besser geformt; verwenden Sie den Konverter, wenn Sie das Format tatsächlich wechseln wollen.
Behält Formatieren meine Kommentare?#
Ja. Kommentare werden beim Parsen in den geordneten Baum aufgenommen und vom Builder neu ausgegeben, sodass <!-- note --> sowohl Formatieren als auch Minimieren übersteht. Auch die Verarbeitungsanweisung <?xml-stylesheet?> bleibt erhalten.
Warum ist die Fehlerposition manchmal nur ungefähr?#
Der zugrundeliegende Parser legt nicht für jede Fehlerart Zeichenpositionen offen, sodass diese Seite bei manchen Fehlern nur eine best-effort-Zeile und -Spalte melden kann, die aus der Nachricht des Parsers herausgeparst wurde. Bei einem fehlenden schließenden Tag ist die Position meist präzise; bei exotischeren Parse-Fehlern kann sie auf Zeile 1 zurückfallen. Die Fehlermeldung selbst wird immer vollständig angezeigt, was typischerweise ausreicht, um den Verursacher zu finden.
Kann es mit sehr großen XML-Dateien umgehen?#
Ja, bis zur Speichergrenze Ihres Browsers. Eingaben über 1 MB werden innerhalb eines Web Workers geparst, sodass die Benutzeroberfläche nicht einfriert. Bei Dokumenten im Bereich Hunderter Megabyte ist mit spürbarer Zeit und Speicherbedarf beim Parsen zu rechnen — dies ist ein Browser-Werkzeug, kein Streaming-Server.