XML anzeigen
Dieses Tool stellt ein Dokument als aufklappbaren Baum in Ihrem Browser dar. Der Baum ist virtualisiert, daher öffnet sich eine große SOAP-Antwort oder Sitemap genauso schnell wie eine kleine, und Attribute werden klar von Kindelementen getrennt angezeigt – genau diese Unterscheidung macht ein unbekanntes XML-Dokument erst lesbar.
Wie funktioniert XML anzeigen?
Niemand öffnet einen XML-Viewer für ein zwanzigzeiliges Dokument. Man öffnet ihn für eine SOAP-Antwort, eine Sitemap, ein SVG, eine Maven-POM oder eine Konfigurationsdatei, die zu groß ist, um sie als Text zu lesen, und zu tief verschachtelt, um ihr noch mit der Faltung eines Texteditors folgen zu können. Die einzige Frage, die wirklich zählt, ist deshalb, was bei großer Größe passiert.
Der Baum ist virtualisiert, die Größe spielt kaum eine Rolle
Die naheliegende Implementierung rendert eine Komponente pro Knoten; ein Dokument mit fünfzigtausend Knoten erzeugt damit fünfzigtausend DOM-Elemente, von denen vielleicht vierzig sichtbar sind. Das Scrollen ruckelt, und der Tab belegt mehrere hundert Megabyte. Hier wird das Dokument zuerst in ein Array aus Zeilen abgeflacht – jede Zeile trägt ihre Tiefe, ihren Typ und die Stelle, an der ihr Teilbaum endet – und gerendert werden nur die Zeilen im sichtbaren Bereich. Das DOM enthält so rund fünfzig Elemente, egal wie groß das Dokument ist.
Aufgezeichnet wird, wo jeder Teilbaum endet – genau das macht das Einklappen billig: Einen Zweig auszublenden ist dann ein einziger Indexvergleich statt eines Durchlaufs über alles, was in ihm liegt. Das Einklappen der Wurzel eines riesigen Dokuments geht damit sofort.
Attribute werden getrennt von Elementen angezeigt
XML kennt zwei Arten von Mitgliedern, und die meisten Viewer werfen sie in einen Topf – so geht der Unterschied zwischen <line sku="X"/> und <line><sku>X</sku></line> verloren. Attribute erscheinen mit einem @-Präfix, sodass beide erhalten bleiben und keins das andere überschreibt. Das ist wichtig, denn ein Element, das sowohl ein Attribut als auch ein Kindelement desselben Namens trägt, kommt in echten Vokabularen häufig vor.
Die Suche deckt das gesamte Dokument ab, nicht nur den aufgeklappten Teil
Ein Treffer, der in einem eingeklappten Teilbaum steckt, wird gefunden und angezeigt – zusammen mit allen Vorfahren auf dem Pfad zu ihm, denn ein Wert ohne seinen Pfad verrät nichts darüber, woher er stammt.
Fehlerhafte Eingaben werden benannt, nicht erraten
Nicht zusammenpassende Tags und ungeschlossene Elemente erzeugen eine Fehlermeldung, die das Tag und die Zeile nennt. Abgeschnittenes XML ist das, was Menschen am häufigsten in einen Viewer einfügen – meist genau der Grund, warum sie es sich ansehen –, also ist ein Viewer, der aus einem kaputten Dokument etwas Plausibles rendert, aktiv kontraproduktiv.
Die formatierte Ansicht ist separat und verlustfrei: Sie rückt neu ein, ohne den Inhalt anzutasten, und bewahrt CDATA, Kommentare, Verarbeitungsanweisungen und den exakten Text innerhalb der Elemente.
XML
<order id="1"><line sku="A" qty="2"/></order>
Baum
▾ order { 2 }
@id "1"
▾ line { 2 }
@sku "A"
@qty "2"Welche Optionen und Sonderfälle unterstützt XML anzeigen?
| Parameter | Typ | Standard | Verhalten & Sonderfälle |
|---|---|---|---|
| Virtualisierung | nur Viewport | — | Zu jedem Zeitpunkt existieren rund fünfzig Zeilen im DOM, egal wie groß das Dokument ist. Das ist der Unterschied zwischen dem Öffnen eines SOAP-Logs von 10 MB und einem eingefrorenen Tab. |
| Attribute | @-Präfix | angezeigt | Von Kind-Elementen getrennt gehalten: Ein Element mit einem sku-Attribut und einem sku-Kind zeigt beides, statt dass eines stillschweigend gewinnt. |
| Textknoten | #text | angezeigt | Elementtext erscheint in einer eigenen Zeile, statt in das Element geklappt zu werden, sodass ein Element mit Text und Kindern beides zeigt. |
| Kommentare | #comment | angezeigt | Werden behalten, denn ein Kommentar in einer Konfigurationsdatei ist oft die einzige Dokumentation dafür, warum ein Wert so ist, wie er ist. |
| CDATA | literal | — | Wird wörtlich angezeigt. Entities in einem CDATA-Abschnitt sind keine Entities – genau das ist der Sinn dieses Konstrukts. |
| Namespaces | beibehalten | Präfix bleibt | soap:Body bleibt soap:Body, und xmlns-Deklarationen erscheinen als Attribute. Entfernen kann man sie im XML-zu-JSON-Konverter – dort ist es eine Konvertierungs-, keine Anzeigeentscheidung. |
| Suche | Teilzeichenfolge | Groß-/Kleinschreibung ignorieren | Findet Namen und Werte im gesamten Dokument, auch in eingeklappten Zweigen, und behält jeden Vorfahren eines Treffers, damit der Pfad sichtbar bleibt. |
| Fehlerhafte Eingabe | Fehler | benannt | Nicht passende oder ungeschlossene Tags werden mit Tag-Name und Zeile gemeldet. Der Baum zeigt weiter das letzte geparste Dokument, statt beim Tippen leerzugehen. |
| Eingabegröße | Bytes | 8 MB | Das Tokenisieren läuft im Hauptthread. Über der Obergrenze lehnt das Tool ab, statt einzufrieren; der Baum selbst verkraftet weitaus mehr Knoten, als diese Grenze erlaubt. |
Häufig gestellte Fragen
Kann das Tool eine große SOAP-Antwort oder eine Sitemap öffnen?
Bis zur Obergrenze von 8 MB – und der Baum ist nicht der Flaschenhals: Er rendert nur, was auf dem Bildschirm sichtbar ist, daher hat die Knotenzahl fast keinen Einfluss darauf. Die Grenze ist der Tokenizer: Er läuft im Haupt-Thread und lehnt alles über 8 MB ab, statt es zu versuchen, denn ein Versuch würde den Tab für Sekunden blockieren.
Warum beginnen manche Zeilen mit @?
Das sind Attribute. XML hat Attribute und Kindelemente; Bäume im JSON-Stil kennen nur eine Art von Mitglied, deshalb erhalten Attribute ein Präfix, damit sie unterscheidbar bleiben. Ohne das Präfix würde ein Element, das sowohl ein sku-Attribut als auch ein sku-Kindelement trägt, nur eines von beiden zeigen – und Sie könnten nicht erkennen, welches.
Kann ich das XML hier bearbeiten?
Sie können den Textbereich bearbeiten, und der Baum folgt, aber der Baum selbst ist schreibgeschützt. Genau dieser Schreibschutz hält ihn auch bei Dokumenten schnell, an denen ein bearbeitbarer Baum scheitern würde – ein editierbarer Baum muss bei jedem Tastenanschlag zwei Wahrheitsquellen abgleichen. Zum Neu-Einrücken verwenden Sie die formatierte Ansicht oder das Tool „XML formatieren“.
Mein Dokument ist ungültig. Warum zeigt der Baum trotzdem etwas?
Weil er die letzte Version zeigt, die sich parsen ließ – so leert ein einziger Tastenanschlag mitten in der Bearbeitung nicht die gesamte Ansicht. Das Fehlerbanner nennt das nicht zusammenpassende oder ungeschlossene Tag und seine Zeile. Sobald das Dokument wieder geparst werden kann, aktualisiert sich der Baum.
Verändert die formatierte Ansicht mein Dokument?
Sie verändert den Leerraum zwischen Elementen und sonst nichts. Textinhalte, CDATA-Abschnitte, Kommentare, Verarbeitungsanweisungen und Attributwerte bleiben byteweise erhalten. Beachten Sie: Leerraum zwischen Elementen ist für einen strikten XML-Parser signifikant, daher ist das neu eingerückte Dokument nicht immer mit dem Original austauschbar – für eine Maschine nicht, nur für einen Menschen.
Wird mein XML hochgeladen?
Nein. Tokenisieren und Rendern geschehen beide in dem Tab, den Sie bereits offen haben – öffnen Sie DevTools, beobachten Sie das Netzwerk-Panel und fügen Sie dann etwas ein. Bei XML ist das wichtiger als bei den meisten Formaten: Was Menschen tatsächlich lesen müssen, ist SOAP-Verkehr, SAML-Assertions und Finanznachrichten – also Material, das zum Sensibelsten gehört, was ein Entwickler anfasst.