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.
XML in JSON überführen
Mitunter möchte man den Inhalt einer alten XML-Schnittstelle, eines SOAP-Austauschs oder eines RSS- beziehungsweise Atom-Feeds in der vertrauten Gestalt von JSON sehen. Dieses Werkzeug wandelt das eingefügte XML um und erledigt die ganze Arbeit im Browser, sodass nichts von dem Eingefügten jemals das Gerät verlässt.
**Ein Satz von Übereinkünften ist gerade deshalb nötig, weil XML und JSON Daten auf grundverschiedene Weise halten.** XML unterscheidet Attribute von Text und erlaubt einem gleichnamigen Element, beliebig oft aufzutreten; JSON kennt beides nicht. Attribute werden daher unter `@attributes` abgelegt, die Zeichenkette, die ein Element unmittelbar trägt, unter `#text`, und wiederholte Elemente werden zu Arrays. **Nicht zu umgehen ist die Mehrdeutigkeit, die entsteht, wenn ein wiederholbares Element zufällig nur einmal vorkommt.** Im ursprünglichen XML bleibt es ein Vorkommen von etwas Wiederholbarem, im JSON sieht es dagegen wie ein einzelner Wert aus, weshalb der empfangende Code am sichersten so geschrieben wird, dass er ein Element wie auch viele verarbeitet.
So gehen Sie vor
- Fügen Sie das XML ein Eine SOAP-Antwort oder ein RSS-Feed lässt sich genau so einsetzen, wie er vorliegt.
- Sehen Sie die Umwandlung durch **Attribute landen unter dem Schlüssel `@attributes`, Text unter `#text`.**
- Vergleichen Sie die Strukturen Neben das ursprüngliche XML gestellt, lässt sich nachprüfen, welches Element unter welchem Schlüssel gelandet ist.
- Kopieren oder laden Sie das Ergebnis Fügen Sie es unmittelbar in Ihren Code ein oder sichern Sie es als Datei.
Tipps für die 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.
Wofür Sie es nutzen können
Beim Anbinden einer XML-Schnittstelle an Code, der nur JSON versteht
Verarbeitet die empfangende Seite ausschließlich JSON, lässt sich die umgewandelte Gestalt vorab festlegen.
Beim Auswerten eines RSS- oder Atom-Feeds
Als JSON lassen sich die Einträge eines Feeds weit leichter unmittelbar mit einem Skript durchlaufen.
Beim Lesen einer SOAP-Antwort
**SOAP, das seiner Verschachtelung und Namensräume wegen schwer zu lesen ist, wird deutlich verständlicher, sobald die Ebenen als JSON ausgebreitet vorliegen.**
Beim Aufbauen von Testdaten
Aus einer echten XML-Antwort lässt sich eine JSON-Attrappe ableiten.
Begriffe der Umwandlungsübereinkunft
- @attributes
- **Der Schlüssel, der die Attribute eines XML-Elements aufnimmt.** Da JSON den Begriff des Attributs nicht kennt, erhalten sie einen eigenen Schlüssel.
- #text
- Der Schlüssel, der die Zeichenkette aufnimmt, die ein Element unmittelbar trägt. Nötig wird er bei einem Element, das zugleich Attribute und Kindelemente besitzt.
- Wiederholtes Element
- Ein Element, das unter demselben Namen mehr als einmal auftritt. **Im JSON wird daraus ein Array, doch ein einzelnes Vorkommen erscheint als schlichter Wert und nicht als Array mit einem Element.**
- Namensraumpräfix
- Der Teil `soap:` in `soap:Body`. Im JSON bleibt er unverändert als Teil des Schlüsselnamens erhalten.
- Gemischter Inhalt
- Text und Kindelemente, die innerhalb eines Elements beieinanderstehen. **JSON hat dafür keine Entsprechung, und hier geht bei der Umwandlung am ehesten Information verloren.**
- Wurzelelement
- Das einzige Element an der Spitze des XML. Im JSON wird es zum äußersten Schlüssel.
Häufig gestellte Fragen
Ü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.