HandyTools Hub

XML-Formatierer

Verschönern, minifizieren, validieren und konvertieren Sie XML

Ein XML-Formatierer räumt dichtes Markup auf, ohne einen Umweg über einen Server. Fügen Sie XML ein, und die Seite kann eine einheitliche Einrückung hinzufügen, es zu einer minimalen Nutzlast zusammenfalten, mit genauen Zeilen- und Spaltenfehlern die Wohlgeformtheit prüfen oder es nach JSON und zurück konvertieren. Das ist regelmäßig nützlich für SOAP-Anfragen und -Antworten, Maven- und Android-Konfigurationsdateien, Sitemaps sowie RSS- oder Atom-Feeds.

Verwendung

  1. XML in den Eingabebereich einfügen oder eintippen.
  2. Eine Aktion wählen: Formatieren, Minimieren, Validieren, XML zu JSON oder JSON zu XML.
  3. Für Formatieren eine Einrückung von 2 oder 4 Leerzeichen im Dropdown wählen. Die anderen Aktionen ignorieren sie.
  4. Den Ausgabebereich lesen und mit der Kopierschaltfläche kopieren. Formatieren, Minimieren und beide Konvertierungen geben bei zurückgewiesener Eingabe Fehler in Rot statt eines Ergebnisses aus.

Praxisbeispiele

Verschachteltes XML formatieren. Gegeben sei <note id="1"><to>Ada</to><to>Bob</to></note> mit einer Einrückung von 2 Leerzeichen; die Ausgabe lautet:

<note id="1">
  <to>Ada</to>
  <to>Bob</to>
</note>

Elemente, deren einziger Inhalt Text ist, bleiben in einer Zeile, wodurch einfache Blattknoten kompakt bleiben, statt zu je drei Zeilen aufzublühen.

Dasselbe Dokument nach JSON konvertieren. Die Ausgabe lautet:

{"note":{"@id":"1","to":["Ada","Bob"]}}

Die Elementnamen wurden zu Schlüsseln, das Attribut zu @id, und das wiederholte <to>-Element zu einem Array.

Minimieren. Jede der formatierten Fassungen fällt zurück zu <note id="1"><to>Ada</to><to>Bob</to></note>, wobei die Leerzeichen zwischen den Tags entfernt, der Textinhalt aber unverändert bleibt.

Die Zuordnungsregeln von XML zu JSON

XML-KonstruktJSON-Ergebnis
WurzelelementEinziger Schlüssel auf oberster Ebene, benannt nach dem Element
KindelementeVerschachtelte Schlüssel
Wiederholte GeschwisterArray unter einem Schlüssel
AttributeSchlüssel mit dem Präfix @
TextinhaltEinfache Zeichenkette oder ein #text-Schlüssel, wenn auch Attribute oder Kinder vorhanden sind
Selbstschließendes Element mit AttributenObjekt aus @-Schlüsseln
Selbstschließendes Element ohne AttributeLeere Zeichenkette
Kommentare und DeklarationenEntfallen

Der #text-Schlüssel erscheint nur, wenn ein Element zusätzlich Attribute oder Kindelemente trägt; ein Blattelement, das nur Text enthält, wird zu einer reinen Zeichenkette.

Der Roundtrip von JSON zu XML

Die umgekehrte Aktion akzeptiert ein geparstes JSON-Objekt. Ein einzelner Schlüssel wird zur Wurzel, sodass {"book":{"title":"Dune"}} <book><title>Dune</title></book> ergibt. Mehrere Schlüssel auf oberster Ebene werden in <root> gehüllt. Ein @name-Schlüssel wird zu einem Attribut seines Elternelements, ein #text-Schlüssel zum Inline-Text des Elternelements, und ein Array wiederholt den Elternschlüssel einmal pro Eintrag. Text- und Attributwerte werden für &, <, >, " und ' escapt, sodass das erzeugte Markup wieder sicher zu parsen ist. Ein Roundtrip über JSON ist nützlich, um XML-Daten an eine JavaScript-App zu übergeben, doch bedenken Sie den oben genannten Verlust der Reihenfolge gemischten Inhalts und der Kommentare.

Was der Validator prüft und was nicht

Der Validator meldet: leere Eingabe, überhaupt keine Tags, nicht zueinander passende öffnende und schließende Tags, schließende Tags ohne passendes öffnendes, leere Tag-Namen, nicht geschlossene Tags am Ende der Eingabe sowie nicht abgeschlossene Kommentare, CDATA-Abschnitte oder Verarbeitungsanweisungen. Fehler tragen eine Zeilen- und Spaltenangabe. Er prüft nicht die Schema-Konformität, DTD-Regeln, die Korrektheit von Namensräumen, doppelte Attribute oder die Auflösung von Entitäten. Er ist ein schneller Lint für das fehlerhafte Markup, das Server eine Anfrage ablehnen lässt, kein standardsvollständiger Parser.

Häufige Fehler

  • Zuerst formatieren, wenn ein Server die Nutzlast ablehnt. Führen Sie stattdessen Validieren aus; es nennt die genaue Zeile und Spalte des beanstandeten Tags, was schneller ist als das Absuchen der Einrückung mit dem Auge.
  • Annehmen, Minimieren komprimiere die Datei. Es entfernt nur Leerzeichen zwischen den Tags, keine Kommentare oder wiederholte Struktur. Gzip auf der Leitung spart meist weit mehr als die Minimierung.
  • Die beiden Konvertierungsrichtungen verwechseln und JSON in die Aktion XML zu JSON einfügen. Die Aktionen sind getrennt; wählen Sie die zu Ihrer Eingabe passende.
  • Der JSON-Form für einzelne versus wiederholte Elemente vertrauen. Ein Schlüssel kann zwischen einer Zeichenkette und einem Array wechseln, je nachdem, wie viele Geschwister erschienen sind, also sollte defensiver Code beide behandeln.

Praktische Tipps und größere Eingaben

Deklarationen bewahren. Die XML-Deklaration und Verarbeitungsanweisungen behalten ihre eigenen Zeilen und werden nicht eingerückt, sodass <?xml version="1.0" encoding="UTF-8"?> oben bleibt, wo Parser es erwarten. Kommentare und CDATA-Blöcke bleiben sowohl beim Formatieren als auch beim Minimieren unverändert erhalten.

Namensraum-Präfixe sind Teil des Tag-Namens. Ein Tag wie <soap:Envelope> wird über seine vollständige Zeichenfolge abgeglichen, sodass öffnende und schließende Tags ausgeglichen sind, solange das Präfix identisch geschrieben ist. Das Tool löst keine Namensraum-URIs auf und prüft nicht, ob ein Präfix deklariert ist — das ist eine Angelegenheit der Schemaebene.

Große Dokumente. Das Formatieren ist ein einzelner Durchlauf im Browser ohne Größenbegrenzung, doch Dateien von mehreren Megabyte können den Tab kurz einfrieren, weil der Einrückungsschritt ein Array von Zeilen aufbaut. Fügen Sie in Abschnitten ein, wenn die Oberfläche stockt; das Minimieren ist leichter, weil es nur Token-Werte aneinanderhängt.

Tabs versus Leerzeichen. Das Einrückungs-Dropdown bietet nur Leerzeichen. Wenn Ihr Projekt Tabs verwendet, formatieren Sie hier zur Lesbarkeit und lassen Sie den Formatierer Ihres Editors die Einrückung vor dem Commit neu schreiben. Fügen Sie formatierte Ausgabe nicht ungeprüft in eine ausgerichtete Datei zurück ein, sonst erzeugen Sie Leerraum-Rauschen in der Versionskontrolle.

Verwandte Tools

Häufig gestellte Fragen

Prüft der Validator mein XSD- oder DTD-Schema?

Nein. Er prüft nur die Wohlgeformtheit — dass Tags ausgeglichen sind, die Verschachtelung stimmt und Kommentare, CDATA und Verarbeitungsanweisungen geschlossen sind. Ein Dokument kann hier bestehen und trotzdem gegen sein Schema verstoßen, weil Schemaregeln wie erforderliche Attribute oder erlaubte Elemente nicht untersucht werden.

Wie werden wiederholte Geschwisterelemente in der JSON-Ausgabe dargestellt?

Das erste Vorkommen wird zu einem einzelnen Wert, und das zweite Vorkommen wandelt diesen Schlüssel in ein Array um. Zwei <to>-Kinder ergeben also „to“: [„Ada“, „Bob“], während ein einzelnes <to> eine einfache Zeichenkette bleibt. Konsumenten müssen auf beide Formen vorbereitet sein.

Warum wurde mein Attribut id mit dem Wert 1 im JSON zu @id?

Attribute werden mit @ versehen, um sie von Kindelementen zu trennen, die sich dasselbe JSON-Objekt teilen. Die Zuordnung ist @id für das Attribut und ein verschachteltes Objekt für Kinder. Die umgekehrte Konvertierung kennt dieselbe Konvention und schreibt das Attribut wieder zurück.

Bleibt bei der XML-zu-JSON-Konvertierung gemischter Inhalt erhalten?

Nicht originalgetreu. Text und Kindelemente werden unter getrennten Schlüsseln gespeichert, wobei der Text unter #text landet, sodass die Verschachtelung von Abschnitten wie fettem Text mit Inline-Tags verloren geht. Wenn Ihr Dokument auf gemischtem Inhalt beruht, behalten Sie es als XML.

Kann ich JSON hier wieder in XML umwandeln?

Ja, die Aktion JSON zu XML ist eingebaut. Ein JSON-Objekt mit einem einzigen Schlüssel auf oberster Ebene verwendet diesen Schlüssel als Wurzelelement; ein Objekt mit mehreren Schlüsseln wird in ein <root>-Element gehüllt. Mit @ beginnende Schlüssel werden zu Attributen, und ein #text-Schlüssel wird zum Inline-Inhalt.

Welche Einrückungsbreiten kann ich beim Formatieren wählen?

Zwei oder vier Leerzeichen, ausgewählt im Einrückungs-Dropdown, das nur erscheint, solange die Aktion Formatieren aktiv ist. Die Aktion Minimieren entfernt unabhängig von dieser Einstellung sämtliche Leerzeichen zwischen den Elementen.

Geprüft vom HandyTools-Hub-Team · Zuletzt aktualisiert