XML-zu-JSON-Konverter
Konvertieren Sie sofort zwischen XML- und JSON-Formaten
Konvertieren Sie XML im Browser in sauberes JSON und zurück. Attribute, wiederholte Elemente und gemischter Text werden mit den weit verbreiteten Konventionen @ und #text abgebildet, sodass ein Roundtrip Ihre Daten erhält. Fügen Sie eine API-Antwort, eine Konfigurationsdatei oder einen RSS-Feed ein und erhalten Sie lesbares JSON — oder verwandeln Sie JSON in ein eingerücktes, gültiges XML-Dokument.
Die Abbildungsregeln
XML kann Dinge ausdrücken, die JSON nicht kann: Ein Element kann gleichzeitig Attribute tragen, Text enthalten und Kinder besitzen. Dieser Konverter stellt das mit einem kleinen, symmetrischen Regelwerk dar.
| XML-Konstrukt | JSON-Darstellung |
|---|---|
Attribut id="42" | Schlüssel "@id": "42" |
| Blatt-Text, ohne Attribute oder Kinder | Einfacher String-Wert |
| Text neben Attributen oder Kindern | "#text": "..." |
| Wiederholter Geschwister-Tag | Array von Werten |
| CDATA-Abschnitt | Textinhalt |
Die Symmetrie ist der wichtige Teil: Schlüssel, die mit @ beginnen, werden wieder als Attribute geschrieben, #text wird zum Text des Elements, und ein Array wird zu wiederholten Elementen. Das macht XML → JSON → XML zu einem stabilen Roundtrip.
Praxisbeispiel: ein Benutzerdokument
Nehmen Sie diese Eingabe:
<users>
<user id="1">
<name>Alice</name>
<email>alice@example.com</email>
</user>
<user id="2">
<name>Bob</name>
<email>bob@example.com</email>
</user>
</users>
Der Name des Wurzelelements wird zum äußeren Schlüssel. Jedes user trägt ein Attribut @id plus Kindelemente, wird also zu einem Objekt mit @id, name und email. Weil zwei user-Elemente Geschwister mit demselben Tag sind, wird der Schlüssel user zu einem Array:
{
"users": {
"user": [
{ "@id": "1", "name": "Alice", "email": "alice@example.com" },
{ "@id": "2", "name": "Bob", "email": "bob@example.com" }
]
}
}
Die inneren Elemente name und email haben weder Attribute noch Kinder, jedes wird daher zu einem einfachen String statt zu einem Objekt.
Gemischter Inhalt und CDATA
Wenn Text neben Attributen steht, wandert er unter #text. <price currency="USD">9.99</price> wird zu {"price": {"@currency": "USD", "#text": "9.99"}}. Wenn Text neben Kindelementen steht, werden alle Textfragmente zuerst verkettet und dann einmal unter #text gespeichert, wodurch gemischter Inhalt seine genaue Verschachtelung verliert. Ein CDATA-Block wird wie Text behandelt, <script><![CDATA[if (a < b) {...}]]></script> liefert also den rohen Inhalt als String-Wert des Elements, ohne Überraschungen bei der Entitätendekodierung.
JSON zu XML: Wurzeln, Einrückung, Maskierung
In der Gegenrichtung wird ein Objekt mit einem einzigen Schlüssel zu seinem eigenen Wurzelelement, während mehrere Schlüssel, ein Array oder ein primitiver Wert in <root> verpackt werden. Sie können zwischen 2 und 4 Leerzeichen Einrückung wählen. Die Ausgabe beginnt immer mit <?xml version="1.0" encoding="UTF-8"?>. Text wird für &, < und > maskiert, Attributwerte zusätzlich für doppelte Anführungszeichen. Schlüsselnamen werden gegen die Regeln für XML-Namen geprüft: Sie müssen mit einem Buchstaben oder Unterstrich beginnen und dürfen Buchstaben, Ziffern, Punkt, Unterstrich, Doppelpunkt oder Bindestrich enthalten. Ein Name mit Leerzeichen oder führender Ziffer wird als ungültig gemeldet, statt fehlerhaftes Markup zu erzeugen.
Häufige Fehler und Grenzen
- Typisierte Werte erwarten. In XML ist alles Text, Zahlen und boolesche Werte kommen also als JSON-Strings an. Wandeln Sie sie selbst um, wenn der Typ wichtig ist.
- Auf die Reihenfolge gemischten Inhalts verlassen. Der Text wird verkettet und getrimmt, die Position der Kindelemente relativ zum Text ist daher nicht rekonstruierbar.
- Vergessen, dass Arrays wiederholte Tags brauchen. Ein JSON-Array von Objekten wird zu wiederholten Elementen mit demselben Tag; eine eigene Listenverpackung gibt es nicht.
- Ungültige Schlüsselnamen verwenden. Leerzeichen, führende Ziffern und andere unzulässige Zeichen in einem JSON-Schlüssel lassen die Konvertierung JSON → XML mit einem Fehler für ungültige Namen scheitern.
- Annehmen, die Attributreihenfolge bleibe beliebig erhalten. Attribute werden in der Reihenfolge der JSON-Schlüssel ausgegeben, und bei XML → JSON werden die
@-Schlüssel vor die Kindelementschlüssel eingefügt, die Reihenfolge ist also stabil, entspricht aber nicht unbedingt dem Originaldokument. - Ein riesiges Dokument in die Kopieren-Schaltfläche einfügen. Sehr große formatiertes Ausgabe ist unhandlich in der Zwischenablage; nutzen Sie stattdessen die Download-Schaltfläche.
Wo es passt
- Legacy- und SOAP-APIs. Viele Unternehmensdienste liefern weiterhin XML. Konvertieren Sie eine Antwort einmal, um ihre Struktur in einem JSON-Viewer zu prüfen, und programmieren Sie dann gegen die Schlüssel
@und#text. - Konfigurationsmigration. Dateien wie
pom.xml,web.configoder ein Android-Manifest lassen sich in JSON umwandeln, das sich leichter diffen und per Skript transformieren lässt. - RSS- und Atom-Feeds. Die Einträge eines Feeds werden zu einem JSON-Array unter dem Kanal-Schlüssel, bereit zum Filtern und Rendern ohne XML-Bibliothek.
- Datenaustausch. Wenn ein nachgelagertes System nur XML akzeptiert, bauen Sie das Objekt als JSON und lassen Sie das Tool ein wohlgeformtes Dokument mit erledigter Maskierung ausgeben.
- Roundtrip-Prüfungen. Konvertieren Sie XML nach JSON und zurück, um zu bestätigen, dass beide Richtungen übereinstimmen, bevor Sie sie in eine Pipeline einbauen.
Für alle diese gilt ein Vorbehalt: Die Abbildung ist eine Konvention, kein universeller Standard. Wenn ein anderes System Attribute inline erwartet oder Metadaten unter einem Schlüssel wie _attributes verpackt, stimmt seine XML-zu-JSON-Ausgabe nicht mit dieser überein, obwohl beide gültiges JSON sind. Richten Sie sich nach der Konvention, die Ihr Konsument erwartet, und nehmen Sie nicht an, dass ein Roundtrip durch ein anderes Tool zusammenpasst.
Bei großen Feeds bevorzugen Sie die Download-Schaltfläche statt des Kopierens: formatiertes JSON mit einigen tausend Einträgen wird lang, und der Browser kommt mit einer Datei besser zurecht als mit einer Auswahl. Der Konverter streamt nicht, ein sehr großes Dokument liegt also auf beiden Seiten der Konvertierung als Text im Speicher. Teilen Sie riesige Dateien in Häppchen pro Eintrag auf, wenn die Seite träge wird.
Verwandte Tools
Häufig gestellte Fragen
Wie werden XML-Attribute in der JSON-Ausgabe dargestellt?
Jedes Attribut wird zu einem Schlüssel mit dem Präfix @ auf dem Objekt seines Elements. Aus einem Attribut id mit dem Wert 42 wird also der Schlüssel @id mit dem Wert 42. In die Gegenrichtung wird jeder Schlüssel, der mit @ beginnt, wieder als Attribut dieses Elements geschrieben.
Wann wird Text zu einem einfachen String statt zu #text?
Ein Element ohne Attribute und ohne Kindelemente wird auf seinen getrimmten Text als einfachen JSON-String reduziert. Sobald das Element zusätzlich Attribute oder Kindelemente hat, wird sein Text unter dem Schlüssel #text abgelegt, weil sich das Objekt die Ebene mit anderen Schlüsseln teilt.
Wie werden wiederholte Geschwisterelemente behandelt?
Ein zweites Geschwister mit demselben Tag-Namen macht diesen Schlüssel zu einem Array und hängt Werte daran an. Zwei user-Elemente unter users werden also zu einem JSON-Array mit den Werten Alice und Bob. In umgekehrter Richtung wird ein JSON-Array wieder zu wiederholten Elementen expandiert.
Was passiert mit gemischtem Inhalt, bei dem Text zwischen Kindelementen steht?
Alle Textknoten innerhalb eines Elements werden verkettet, getrimmt und einmal unter #text gespeichert. Die Reihenfolge der Verschachtelung geht verloren, deshalb ergibt ein Absatz mit Text, einem fett gesetzten Wort und weiterem Text unter #text nur die aneinandergehängten Textstücke, keine positionsgetreue Rekonstruktion.
Welches Wurzelelement wird verwendet, wenn das JSON mehrere Schlüssel auf oberster Ebene hat?
Ein Objekt mit genau einem Schlüssel liefert seinen eigenen Namen als Wurzelelement. Alles andere — mehrere Schlüssel, ein Array oder ein primitiver Wert — wird in ein Element namens root verpackt. Das Dokument beginnt immer mit einer XML-Deklaration für Version 1.0 und UTF-8.
Werden Entitäten dekodiert und CDATA-Abschnitte verarbeitet?
Benannte und numerische Zeichenentitäten in Text und Attributwerten werden in ihre Zeichen dekodiert. Ein CDATA-Abschnitt wird als Textinhalt behandelt, landet also genau wie gewöhnlicher Text in #text oder wird zu einem einfachen String zusammengefasst.
Geprüft vom HandyTools-Hub-Team · Zuletzt aktualisiert