SuperDevTools

XML formatieren und validieren

Ergebnis
XML einfügen, eine Datei hierher ziehen oder auf „Beispiel“ klicken.
Elemente
0
Attribute
0
Tiefe
0
Größe des Ergebnisses
0

Externe Entitäten werden nie geladen: Der DOMParser des Browsers ruft keine Datei und keine Adresse ab, die in einem DOCTYPE angegeben ist.

Alles läuft in Ihrem Browser: Ihr XML wird weder gesendet noch gespeichert.

Ein XML Formatter und Validator, der im Browser bleibt

XML transportiert strukturierte Daten: RSS-Feeds, Sitemaps, E-Rechnungen, Konfigurationsdateien oder Exporte aus Warenwirtschaft und Buchhaltung. Solche Dateien kommen oft in einer einzigen Zeile an oder enthalten ein falsch geschlossenes Tag, an dem der Import scheitert. Dieses Werkzeug prüft, ob das Dokument wohlgeformt ist, formatiert oder komprimiert es, zeigt es als Baum und wandelt es in JSON um.

Fügen Sie den Text in „Ihr XML“ ein, ziehen Sie eine Datei auf das Feld oder wählen Sie „Datei öffnen“. Die Prüfung läuft bei jeder Änderung: Entweder erscheint „Wohlgeformtes XML.“ oder eine Meldung mit Zeile, Spalte und Ursache, dazu ein Ausschnitt, in dem das fehlerhafte Zeichen markiert ist. „Zum Fehler“ setzt den Cursor genau dorthin.

So funktioniert es

  1. Das „Ergebnis“ wählen: „Formatieren“, „Minifizieren“, „XML → JSON“ oder „JSON → XML“.
  2. „Einrückung“ (2 Leerzeichen, 4 Leerzeichen oder Tabulator) und die Lage der „Attribute“ (In der Zeile des Tags oder Eines pro Zeile) einstellen und „Kommentare behalten“ an- oder abwählen.
  3. In die „Baum“-Ansicht wechseln und Elemente aufklappen. Ein Klick auf ein Tag oder ein Attribut zeigt seinen XPath, zum Beispiel /catalog/product[2]/@ref; „Pfad kopieren“ legt ihn in die Zwischenablage. Die Suche durchläuft Tags, Attribute und Text.
  4. Auf „Kopieren“ oder „Herunterladen“ klicken. Die Felder „Elemente“, „Attribute“, „Tiefe“ und „Größe des Ergebnisses“ liefern die Statistik.

Wohlgeformt oder gültig?

Ein wohlgeformtes Dokument hält die XML-Syntax ein; ein gültiges Dokument entspricht zusätzlich einem Schema (DTD oder XSD), das die erlaubten Tags festlegt. Dieses Werkzeug prüft die Wohlgeformtheit, nicht die Schema-Konformität. Die Regeln sind überschaubar: genau ein Wurzelelement, jedes Tag in umgekehrter Reihenfolge geschlossen, Attributwerte in Anführungszeichen, Groß- und Kleinschreibung in Namen beachtet, & und < im Text maskiert.

GeschriebenProblemRichtig
<a><b></a></b>überkreuzte Tags<a><b></b></a>
<a id=1/>Wert ohne Anführungszeichen<a id="1"/>
<a>F&E</a>& nicht maskiert<a>F&amp;E</a>
<a>&nbsp;</a>HTML-Entität, in XML unbekannt<a>&#160;</a>
<Preis>9</preis>andere Schreibweise<preis>9</preis>

Beispiel: Steht <bestellung> in Zeile 1, <artikel>Kugelschreiber in Zeile 2 (mit zwei Leerzeichen eingerückt) und </bestellung> in Zeile 3, meldet das Werkzeug „Zeile 3, Spalte 1: </bestellung> gefunden, obwohl <artikel> aus Zeile 2, Spalte 3 noch offen ist“. Danach prüft der DOMParser des Browsers denselben Text; findet er einen weiteren Fehler, erscheint seine Meldung mit Zeile und Spalte.

CDATA, Namensräume und Entitäten

Ein Abschnitt <![CDATA[ … ]]> enthält Rohtext, in dem < und & nicht maskiert werden müssen. Sein Inhalt wird beim Formatieren und beim Minifizieren unverändert übernommen. Dasselbe gilt für den Text eines Elements, für gemischten Inhalt (Text und Tags durcheinander) und für jedes Element mit xml:space="preserve": Nur der Leerraum zwischen Tags ändert sich.

Ein Präfix wie p:price muss mit xmlns:p="…" am Element oder an einem übergeordneten Element deklariert sein, sonst meldet das Werkzeug einen Fehler. Ohne DTD gibt es nur fünf benannte Entitäten: &amp;, &lt;, &gt;, &quot; und &apos;, dazu numerische Verweise wie &#228;. Externe Entitäten werden nie geladen: Der DOMParser des Browsers ruft keine Datei und keine Adresse aus einem DOCTYPE ab, damit sind XXE-Angriffe ausgeschlossen.

XML in JSON umwandeln und zurück

Die Umwandlung folgt einer einfachen Konvention: Attribute mit dem Präfix @, Text mit #text, CDATA mit #cdata, wiederholte Elemente als Array, Werte immer als Zeichenketten. So wird aus <artikel nr="X1" menge="2">Stift</artikel> das Objekt {"artikel":{"@nr":"X1","@menge":"2","#text":"Stift"}}, und die Rückumwandlung ergibt wieder dasselbe Tag. Kommentare und die Reihenfolge zwischen Tags mit unterschiedlichen Namen gehen dabei verloren.

Häufige Fragen

Friert eine 20-MB-Datei die Seite ein?

Nein. Die Formatierung läuft im Hintergrund; nur die Prüfung durch den Browser beschäftigt die Seite einen Moment. Ab 2 MB wird die Datei nicht ins Eingabefeld kopiert und nur der Anfang des Ergebnisses angezeigt, „Kopieren“ und „Herunterladen“ umfassen aber alles.

Warum findet mein XPath im Programm nichts?

Meist liegt es an einem Standard-Namensraum (xmlns="…"): Die meisten Bibliotheken verlangen dann ein im Code deklariertes Präfix. Die Position [2] erscheint nur, wenn es mehrere Geschwister mit demselben Namen gibt, und sie beginnt bei 1.

Verändert das Formatieren meine Daten?

Nein. Der Leerraum zwischen Tags wird neu geschrieben und Abstände innerhalb der Tags werden vereinheitlicht, Texte, Attributwerte und Anführungszeichen bleiben aber gleich. Ein Element, das nur Leerraum enthält, wird leer.