XML zu JSON Konverter
Fügen Sie XML links ein, erhalten Sie JSON rechts. Attribute bleiben mit @_-Präfix erhalten. Kein Upload, keine Anmeldung.
- Fügen Sie XML in den linken Textbereich ein.
- Klicken Sie auf „In JSON umwandeln". Element-Verschachtelung wird zu verschachtelten Objekten.
- Kopieren Sie das JSON oder laden Sie es als data.json herunter.
- Wiederholte Kindelemente werden automatisch zu Arrays zusammengefasst.
Was macht es?
Parst XML in ein JSON-Objekt mit fast-xml-parser-Konventionen: Kindelemente werden zu Objekteigenschaften, wiederholte Kinder zu Arrays, Attribute werden mit `@_`-Präfix am Elternobjekt erhalten und der Textinhalt gemischter Knoten landet auf einem `#text`-Schlüssel. Numerische und boolesche Attributwerte werden automatisch über `parseAttributeValue: true` typisiert — XML `count="42"` macht Round-Trip als `"@_count": 42`, nicht als String `"42"`.
Beispiel
XML-Eingabe:
<root version="1">
<name>Ada</name>
<tags>math</tags>
<tags>logic</tags>
</root> JSON-Ausgabe:
{
"root": {
"@_version": 1,
"name": "Ada",
"tags": ["math", "logic"]
}
} Häufige XML-Stolperfallen und wie man sie behandelt
XML hat Sonderfälle, die JSON nicht hat. Das sind die Muster, die überraschende Ausgabe erzeugen.
- Einzelnes Kind vs. mehrere Kinder. `<a><b/></a>` erzeugt `{"a":{"b":""}}` (einzelnes Kind als Objekteigenschaft), aber `<a><b/><b/></a>` erzeugt `{"a":{"b":["",""]}}` (mehrere als Array). Wenn Ihr nachgelagerter Code immer ein Array erwartet, normalisieren Sie nach der Konvertierung.
- Attribute vs. Kindelemente. Attribute erscheinen mit `@_`-Präfix auf der gleichen Ebene wie Kinder. `<user id="1"><name>Ada</name></user>` wird zu `{"user":{"@_id":1,"name":"Ada"}}`. Manche Tools verschmelzen Attribute mit Eigenschaften — das ist eine andere Konvention als die hier verwendete.
- Gemischter Inhalt (Text + Kindelemente). `<p>Hello <b>world</b></p>` erzeugt `{"p":{"#text":"Hello ","b":"world"}}`. Der Text wird erfasst, aber seine Position relativ zu den Kindern geht verloren — JSON hat keine Möglichkeit, geordneten gemischten Inhalt darzustellen. Die meisten Konfig-Stil-XML treffen diesen Fall nicht.
- Namespaces. Namespaces (`<x:foo xmlns:x="...">`) bleiben als Teil des Elementnamens (`x:foo`) erhalten. Viele XML-Konsumenten entfernen das Präfix; falls nötig, machen Sie das als Nachverarbeitungsschritt.
- CDATA-Abschnitte. `<![CDATA[some text]]>` wird als reiner Text geparst und mit dem `#text` seines Elternelements zusammengeführt. Die CDATA-Umrahmung geht verloren — okay für die meisten Fälle, aber zu beachten, wenn die Umrahmung semantisch bedeutsam war.
- Selbstschließend vs. leer. `<x/>` und `<x></x>` sind in XML äquivalent und erzeugen die gleiche JSON-Ausgabe (`""` für den Wert). Die ursprüngliche Umrahmung ist aus dem JSON nicht wiederherstellbar.
Häufig gestellte Fragen
Warum hat meine Ausgabe ein `@_`-Präfix bei Attributen?
Es unterscheidet XML-Attribute von Kindelementen. Ohne Präfix hätte `<user id="1"><id>foo</id></user>` zwei `id`-Schlüssel — ein JSON-Objekt kann nur einen haben. Das Präfix hält beide round-trip-fähig. Wenn Sie das Präfix nicht brauchen, ersetzen Sie `"@_"` durch `""` in einem Nachverarbeitungsschritt (und akzeptieren das Kollisionsrisiko).
Kann ich das JSON ohne den umschließenden Root-Schlüssel bekommen?
XML hat immer ein einzelnes Root-Element. Das JSON behält diese Umhüllung für Round-Trippability. Entfernen Sie sie nach der Konvertierung, wenn Sie das innere Objekt wollen — `result.root` statt `result`.
Werden XML-Kommentare erhalten?
Nein. JSON hat keine Kommentar-Syntax, und der Parser ist konfiguriert, XML-Kommentare zu ignorieren. Wenn Sie Kommentare erhalten müssen, müssten Sie eine andere Zwischendarstellung verwenden, die sie unterstützt.
Werden Attributwerte typisiert?
Ja — `parseAttributeValue: true` ist gesetzt, also wird `count="42"` zu `"@_count": 42` (Zahl) und `enabled="true"` zu `"@_enabled": true` (Boolean). Wenn Sie Attribute als Strings brauchen, post-prozessieren oder forken Sie die Konfiguration.
Wird mein XML hochgeladen?
Nein. Alles läuft in Ihrem Browser — Ihr XML wird durch JavaScript auf dieser Seite geparst und nie an einen Server gesendet. Verifizieren Sie es in den Browser-Entwicklertools.
Kann es sehr große XML-Dateien verarbeiten?
Bis zu etwa 30 MB, bevor das Textfeld langsam wird. Der Parser skaliert linear. Für größere Eingaben fast-xml-parser auf der Kommandozeile ausführen — dieselbe Bibliothek.