100 % lokal — Ihre Daten verlassen nie Ihren Browser

XML in JSON — Attribute inbegriffen

XML in JSON umwandeln. Attribute, wiederholte Elemente und Text landen alle dort, wo ein Punkt oder eine Klammer im Code sie erreicht.

Sofort Privat Null Cookies
Einrückung

XML-Eingabe

JSON-Ausgabe

Was dieses Werkzeug tut

Jedes Element wird ein Schlüssel; seine Kinder werden der Wert.

<user id="1"><name>Ada</name></user>
{ "user": { "name": "Ada", "@_id": "1" } }

Drei Stellen, an denen die Modelle auseinandergehen

XML und JSON beschreiben nicht dieselben Formen, und jeder Konverter muss entscheiden. Das sind die Entscheidungen.

Attribute

Sie werden Schlüssel mit dem Präfix @_. JSON hat eine Art von Member; XML hat Attribute und Elemente, und sie können denselben Namen tragen — <user id="1"><id>2</id></user> enthält zwei verschiedene Dinge namens id. Das Präfix hält sie auseinander. Ein Schalter entfernt Attribute, wenn Sie sie nicht brauchen.

Trägt ein Element Text und Attribute zugleich, landet der Text unter #text.

Wiederholung

Ein <item> ergibt ein Objekt. Zwei ergeben ein Array.

<r><i>1</i></r>          →  { "r": { "i": 1 } }
<r><i>1</i><i>2</i></r>  →  { "r": { "i": [1, 2] } }

Das ist kein behebbarer Mangel: nichts in einem XML-Dokument sagt, ob ein Element wiederholbar ist. Nur ein Schema weiß es. Erwartet Ihr Code eine Liste, normalisieren Sie sie beim Eintreffen.

Gemischter Inhalt

Diesen kann JSON schlicht nicht ausdrücken, und das gehört deutlich gesagt.

<p>Hallo <b>Welt</b> nochmal</p>

JSON hat keine Möglichkeit zu sagen, dass Hallo vor <b> stand und nochmal danach. Die Textstücke werden unter #text gesammelt, und ihre Position gegenüber den Elementen geht verloren, ebenso der Abstand dazwischen. Zählt der Text — ein Dokument statt eines Datensatzes —, dann wandeln Sie nichts um und nehmen den XML-Formatierer.

Typen

<a>1</a> ergibt die Zahl 1. <a>007</a> ergibt die Zeichenkette "007", denn eine führende Null ist meist eine Postleitzahl oder eine Kontonummer, und sie als Sieben zu lesen verliert sie. Ein zwanzigstelliger Bezeichner bleibt ebenfalls eine Zeichenkette: eine JSON-Zahl würde ihn runden.

Was keine Daten sind

Die XML-Deklaration und jede Verarbeitungsanweisung entfallen. Sie beschreiben das Dokument, nicht seinen Inhalt — ein ?xml-Schlüssel neben Ihrem Wurzelelement war nie eine Information, nach der Sie gefragt haben.

Datenschutz ab Werk

Alles läuft lokal in deinem Browser mit JavaScript. Deine Daten werden nie hochgeladen, wodurch das Tool auch für sensible Inhalte sicher ist und offline funktioniert.

Häufige Fragen

Warum wurde mein einzelnes <item> ein Objekt statt eines Arrays?
Weil nichts in einem XML-Dokument sagt, ob ein Element sich wiederholt. Ein `<item>` sieht genau aus wie eine Liste mit einem Eintrag, und nur ein Schema kennt den Unterschied. Ab zwei wird es ein Array, bei einem ein Objekt. Braucht Ihr Konsument in beiden Fällen eine Liste, normalisieren Sie dort — `Array.isArray(x) ? x : [x]` ist die übliche Zeile.
Warum haben Attribute das Präfix @_?
Weil JSON eine Art von Member hat und XML zwei. `<user id="1"><id>2</id></user>` enthält ein Attribut und ein Element, beide `id` genannt und nicht dasselbe; ohne Präfix würde eines das andere überschreiben. Der Schalter entfernt Attribute ganz, wenn Sie sie lieber nicht sehen.
Warum bleibt <a>007</a> eine Zeichenkette, während <a>7</a> eine Zahl wird?
Weil die führende Null fast immer trägt: eine Postleitzahl, eine Kontonummer, eine Teilenummer. `007` als Zahl sieben zu lesen verliert sie endgültig. Eine Zahl ohne führende Nullen wird umgewandelt; was eine JSON-Zahl nicht exakt hält, etwa ein zwanzigstelliger Bezeichner, bleibt aus demselben Grund eine Zeichenkette.

Ähnliche Konverter