XML-zu-JSON-Konverter

Wandelt XML-Daten in JSON um. Verwandelt Antworten alter XML-APIs, SOAP-Nachrichten oder RSS/Atom-Feeds in JSON — Attribute landen unter @attributes, Text unter #text, wiederholte Elemente werden zu Arrays — direkt im Browser.

Tipps zur Nutzung

  • Elemente mit Attributen werden in einem `@attributes`-Objekt zusammengefasst, getrennt vom eigenen Text oder den Kindelementen des Elements.
  • Mischt ein Element Attribute mit Kindelementen oder Text, wird der Textteil unter `#text` gespeichert, damit er nie mit einem Attributwert verwechselt wird.
  • Geschwisterelemente mit demselben Namen werden automatisch zu einem Array zusammengefasst: Drei ``-Tags ergeben ein Array mit 3 Elementen, während ein einzelnes als einfaches Objekt erhalten bleibt.
  • Ein leeres Element ohne Attribute, Text oder Kinder (z. B. ``) wird zu `null`.
  • Namespace-Präfixe wie `xmlns` werden nicht abgetrennt — ein Element bleibt unter dem Schlüssel `ns:tag` samt Präfix erhalten.

Häufig gestellte Fragen

Die Attribute jedes Elements werden unter dem Schlüssel `@attributes` in einem Objekt gebündelt. Zum Beispiel wird `` zu `{"@attributes": {"category": "fiction"}, ...}` — getrennt vom eigentlichen Wert des Elements (Text oder Kinder), sodass beides nie verwechselt wird.

Teilen sich Geschwisterelemente unter demselben Elternelement einen Namen, werden sie automatisch zu einem Array zusammengefasst. Zwei ``-Tags erzeugen zum Beispiel einen `book`-Schlüssel, dessen Wert ein Array mit 2 Elementen ist; ein einzelnes `` bleibt hingegen ein einfaches Objekt.

Die häufigste Ursache ist ein fehlendes oder falsch benanntes schließendes Tag (mit einem anderen Namen geschlossen als geöffnet). XML verlangt außerdem genau ein Wurzelelement, sodass auch das Einfügen mehrerer Elemente auf oberster Ebene wie `......` fehlschlägt.

Dieses Tool unterstützt nur die Richtung XML zu JSON. Wenn Sie JSON oder XML für sich allein formatieren oder validieren möchten, nutzen Sie die anderen Formatierungstools auf dieser Website.

Namespace-Präfixe bleiben unverändert erhalten, statt abgetrennt zu werden, sodass ein Element weiterhin unter `ns:tag` steht. Eine Namespace-Auflösung (Zuordnung des Präfixes zu seiner URI) findet nicht statt, sodass XML mit komplexen Namespaces möglicherweise nicht in die erwartete Struktur umgewandelt wird.
ツールくん

Übrigens – Warum es keine einzige "richtige" Art gibt, XML in JSON umzuwandeln

Anders als bei der einfachen Zeile-zu-Objekt-Zuordnung zwischen CSV und JSON gibt es keine allgemein anerkannte Konvention für die Umwandlung zwischen XML und JSON. In XML können Attribute, Textknoten und Kindelemente innerhalb eines Elements nebeneinander bestehen, während JSON nur einfache Schlüssel-Wert-Paare kennt — bei der Konvertierung muss also irgendeine Konvention gewählt werden. Große Implementierungen wie xml2json, xml-js und org.json haben sich jeweils auf unterschiedliche Regeln geeinigt, wie Attribute dargestellt und wie Text behandelt wird, der neben Kindelementen vorkommt.

Trotzdem begegnen Entwicklern XML-Dateien nach wie vor häufig. SOAP-basierte Web-APIs, jahrzehntealte Systemintegrationen in Finanzwesen, Verwaltung und Gesundheitswesen, RSS/Atom-Feeds und Android-Layoutdateien sind nur einige der Bereiche, in denen XML bis heute das Standardformat ist. Der Bedarf, Daten aus diesen Altsystemen in eine moderne, ausschließlich JSON-basierte Toolchain zu überführen — sei es zur Verarbeitung mit jq oder zur Bearbeitung als einfaches Objekt in JavaScript —, bleibt bestehen.

Die von diesem Tool verwendete Konvention `@attributes`/`#text` ist eine praktische, verbreitete Wahl und keine mit Symbolen überladene Notation. Blattelemente ohne Attribute werden direkt in ihren Textwert umgewandelt, wodurch einfache Konfigurationswerte oder ein RSS-Titel als schlichtes, gut lesbares JSON erhalten bleiben, während Elemente mit Attributen explizit abgegrenzt werden — sodass schon ein Blick auf das Ergebnis genau zeigt, welche Werte ursprünglich Attribute waren.