XML zu JSON Konverter

Fügen Sie XML links ein, erhalten Sie JSON rechts. Attribute bleiben mit @_-Präfix erhalten. Kein Upload, keine Anmeldung.

  1. Fügen Sie XML in den linken Textbereich ein.
  2. Klicken Sie auf „In JSON umwandeln". Element-Verschachtelung wird zu verschachtelten Objekten.
  3. Kopieren Sie das JSON oder laden Sie es als data.json herunter.
  4. 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.