Was ist dieses Tool?
XML und JSON sind beides baumartige Datenformate, kommen aber in unterschiedlichen Kontexten zum Einsatz: veraltete Enterprise-APIs, SOAP-Dienste, RSS/Atom-Feeds und viele Konfigurationsformate setzen weiterhin auf XML, während moderne REST-APIs und JavaScript-Code fast ausschließlich JSON verwenden. Dieses Tool übersetzt zwischen beiden, damit du beim Verbinden alter und neuer Systeme keines von beiden von Hand schreiben musst.
Die Umwandlung basiert direkt auf der DOMParser-API des Browsers zum Einlesen von XML und folgt der Struktur der W3C-XML-1.0-Spezifikation bei der Erzeugung — das erzeugte XML ist also wohlgeformt, und akzeptiertes XML wird genauso interpretiert wie es ein Browser oder jede standardkonforme XML-Bibliothek tun würde.
Da XML Konzepte kennt, die JSON nicht hat (Attribute, gemischter Text-/Element-Inhalt, ein zwingend einziges Wurzelelement), und JSON Konzepte kennt, die XML nicht hat (native Arrays, Booleans, Zahlen), verwendet das Tool eine dokumentierte, weit verbreitete Konvention: Ein XML-Attribut `name="wert"` wird zum JSON-Schlüssel `"@_name": "wert"`, der Textinhalt eines Elements wird entweder direkt zum String-Wert (wenn es weder Kinder noch Attribute hat) oder zu einem `"#text"`-Schlüssel neben den Attributen, und wiederholte Geschwisterelemente mit demselben Tag werden zu einem JSON-Array.
Warum sollte man es nutzen?
- Bidirektional — wandle JSON in XML oder XML in JSON auf demselben Bildschirm um.
- Behandelt Verschachtelung korrekt — verschachtelte JSON-Objekte werden zu verschachtelten XML-Elementen und umgekehrt, in beliebiger Tiefe.
- Arrays werden auf wiederholte Elemente abgebildet — ein JSON-Array unter einem Schlüssel wird zu ebenso vielen XML-Geschwisterelementen mit demselben Tag, und wiederholte XML-Tags kommen als JSON-Array zurück.
- XML-Attribute bleiben erhalten — über die Konvention `@_attributName`, sodass Attributdaten nicht stillschweigend verloren gehen.
- In die Zwischenablage kopieren oder als .json- oder .xml-Datei herunterladen.
- 100 % clientseitig — nichts, was du einfügst, wird irgendwohin hochgeladen.
Anleitung
- Wähle eine Richtung: „XML → JSON“ oder „JSON → XML“.
- Füge deine Daten in das Eingabefeld ein.
- Klicke auf „Konvertieren“.
- Prüfe das Ergebnis und kopiere es dann oder klicke auf „Herunterladen“, um eine Datei zu speichern.
Beispiel
Eingabe
{"user":{"name":"Alice","age":30}}Ausgabe
<?xml version="1.0" encoding="UTF-8"?>
<user>
<name>Alice</name>
<age>30</age>
</user>Der einzige oberste JSON-Schlüssel („user“) wird zum XML-Wurzelelement; hat das JSON mehr als einen obersten Schlüssel, wickelt das Tool alles in ein <root>-Element, da XML genau ein Wurzelelement verlangt.
Praktische Tipps
- Migration einer alten XML-Konfiguration (etwa der Einstellungsdatei einer älteren Anwendung) in ein modernes JSON-basiertes System: XML einfügen, umwandeln und bei Bedarf Feldnamen anpassen.
- Testen eines SOAP- oder XML-RPC-Endpunkts aus JavaScript heraus: Wandle hier deinen JSON-Request in XML um, bevor du ihn sendest, oder wandle eine XML-Antwort zurück in JSON, um sie leicht zu prüfen.
- Verwendet dein JSON Arrays für Daten, die XML als wiederholte Elemente darstellen würde, achte darauf, das Array zuerst unter einem einzigen Schlüssel zu verschachteln (z. B. {"items":{"item":[1,2,3]}}) statt als nacktes Array auf oberster Ebene, da XML nicht mehrere Wurzelelemente haben kann.
Warum die @_-Attributkonvention wichtig ist
Der kniffligste Teil der JSON/XML-Umwandlung ist, dass XML-Elemente zwei Arten von Daten gleichzeitig tragen können — Attribute und Kindinhalte —, während ein einfaches JSON-Objekt nur Schlüssel und Werte kennt. Ohne eine Konvention, die beides trennt, würde ein naiver Konverter Attribute entweder ganz verlieren oder sie so mit Kindelementen vermischen, dass eine zuverlässige Rückumwandlung nicht mehr möglich ist. Die Präfixkonvention `@_name` (auch von weit verbreiteten Bibliotheken im JavaScript-Ökosystem verwendet) löst dies, indem Attribute eine eindeutige, unverwechselbare Schlüsselform erhalten — so wird `<product id="42">Widget</product>` sauber hin und zurück in `{"product":{"@_id":"42","#text":"Widget"}}` umgewandelt, ohne die id zu verlieren oder falsch zu raten, welcher Wert wozu gehört.
Häufig gestellte Fragen
Was passiert mit JSON, das mehr als einen obersten Schlüssel hat?
XML verlangt ein einziges Wurzelelement. Hat dein JSON-Objekt also mehrere oberste Schlüssel (z. B. {"a":1,"b":2}), wird die Ausgabe in ein <root>-Element gepackt: <root><a>1</a><b>2</b></root>. Hat dein JSON genau einen obersten Schlüssel, wird dieser direkt zum Namen des Wurzelelements.
Wie werden XML-Attribute in JSON dargestellt?
Ein Attribut wie <user id="7"> wird im resultierenden JSON-Objekt zum Schlüssel "@_id": "7". Dies ist eine gängige, dokumentierte Konvention (auch von Bibliotheken wie fast-xml-parser verwendet), die Attribute klar von Kindelementen unterscheidbar hält.
Werden wiederholte XML-Elemente zu einem JSON-Array?
Ja. Hat ein Element mehrere Kinder mit demselben Tag-Namen, z. B. <items><item>1</item><item>2</item></items>, ergibt die Umwandlung in JSON {"items":{"item":["1","2"]}}. Wandelt man dieses JSON zurück in XML, entstehen wieder die wiederholten <item>-Elemente.
Bleiben Zahlen und Booleans bei der Umwandlung von XML in JSON erhalten?
XML kennt kein natives Konzept von Zahlen oder Booleans — alles ist Text —, daher kommt Textinhalt als JSON-String an (z. B. "30" statt 30). Brauchst du numerische Typen, musst du diese Felder anschließend selbst umwandeln.
Werden meine Daten irgendwohin hochgeladen?
Nein. Parsen und Umwandeln laufen vollständig in JavaScript in deinem Browser über die eingebaute DOMParser-API ab — es wird nichts an einen Server gesendet, daher ist es sicher, das Tool mit privaten Konfigurationsdateien oder internen API-Daten zu nutzen.