XML to JSON

XML in JSON-Format konvertieren

Beispiel ausprobieren

XML-Eingabe

JSON-Ausgabe

Läuft lokal · Sicher zum Einfügen von Secrets
JSON erscheint hier…

Was ist XML-zu-JSON-Konvertierung?

XML-zu-JSON-Konvertierung ist der Prozess, Daten von Extensible Markup Language (XML) in JavaScript Object Notation (JSON) zu überführen. Beide Formate repräsentieren strukturierte, hierarchische Daten, verwenden jedoch unterschiedliche Syntaxen und Datenmodelle. XML verwendet öffnende und schließende Tags mit optionalen Attributen, während JSON Schlüssel-Wert-Paare, Arrays und primitive Typen einsetzt. Die Konvertierung von XML zu JSON ermöglicht es, XML-Daten in Umgebungen zu verarbeiten, in denen JSON das native Format ist — etwa JavaScript-Runtimes, REST-APIs und NoSQL-Datenbanken.

Die Konvertierung ist nicht immer eins-zu-eins. XML besitzt Konstrukte ohne direkte JSON-Entsprechung: Attribute, gemischten Inhalt (Text, der mit untergeordneten Elementen verwoben ist), Verarbeitungsanweisungen, Kommentare, CDATA-Abschnitte und Namensraumdeklarationen. Verschiedene Konvertierungsbibliotheken behandeln diese Konstrukte unterschiedlich, weshalb mehrere Konventionen existieren. Der verbreitetste Ansatz versieht Attributnamen mit dem Präfix @ und legt Textinhalt in einem #text-Feld ab, wenn Attribute im selben Element vorhanden sind.

Die XML-zu-JSON-Konvertierung ist ein häufiger Schritt bei der Migration von SOAP zu REST, beim Konsumieren älterer Enterprise-APIs oder bei der Verarbeitung von Behörden- und Finanzdaten-Feeds, die XML vorschreiben. Anstatt Produzenten und Konsumenten gleichzeitig umzuschreiben, konvertieren Teams den XML-Payload an der Grenzschicht und reichen JSON weiter. AWS API Gateway, Apache Camel und MuleSoft unterstützen dieses Muster nativ.

XML input
<bookstore>
  <book category="fiction">
    <title lang="en">The Great Gatsby</title>
    <author>F. Scott Fitzgerald</author>
    <year>1925</year>
    <price>10.99</price>
  </book>
  <book category="non-fiction">
    <title lang="en">Sapiens</title>
    <author>Yuval Noah Harari</author>
    <year>2011</year>
    <price>14.99</price>
  </book>
</bookstore>
JSON output
{
  "bookstore": {
    "book": [
      {
        "@category": "fiction",
        "title": {
          "@lang": "en",
          "#text": "The Great Gatsby"
        },
        "author": "F. Scott Fitzgerald",
        "year": "1925",
        "price": "10.99"
      },
      {
        "@category": "non-fiction",
        "title": {
          "@lang": "en",
          "#text": "Sapiens"
        },
        "author": "Yuval Noah Harari",
        "year": "2011",
        "price": "14.99"
      }
    ]
  }
}

Warum einen Online-XML-zu-JSON-Konverter verwenden?

Ein einmaliges Konvertierungsskript zu schreiben kostet Zeit, besonders wenn das XML Attribute, Namensräume oder wiederholte Elemente enthält, die zu JSON-Arrays werden müssen. Ein browserbasierter Konverter liefert die JSON-Ausgabe in Sekunden, sodass Sie die Struktur prüfen und direkt weiterarbeiten können.

Sofortige Konvertierung
XML einfügen und sofort JSON-Ausgabe erhalten. Keine Bibliothek installieren, kein Skript schreiben, kein Build-Tool konfigurieren.
🔒
Datenschutz an erster Stelle
Die gesamte Konvertierung läuft im Browser per JavaScript. Ihre XML-Daten verlassen nie Ihren Rechner und werden nie auf einen Server hochgeladen.
🔀
Handhabt Attribute und Arrays
Attribute werden auf Schlüssel mit @-Präfix abgebildet. Wiederholte Geschwisterelemente werden automatisch zu JSON-Arrays gruppiert — nach der Parker- oder BadgerFish-Konvention.
📋
Kein Konto erforderlich
Seite öffnen, XML einfügen, JSON-Ergebnis kopieren. Keine Registrierung, kein API-Schlüssel, keine Nutzungsbeschränkungen.

Anwendungsfälle für XML zu JSON

Frontend-Entwicklung
XML-API-Antworten in JSON konvertieren, um Daten in React-, Vue- oder Angular-Komponenten darzustellen, ohne eine XML-Parser-Bibliothek zum Client-Bundle hinzufügen zu müssen.
Backend-Entwicklung
SOAP-Payloads, RSS/Atom-Feeds oder XML-RPC-Antworten auf der API-Gateway-Schicht in JSON umwandeln, bevor die Daten an Microservices weitergegeben werden, die JSON-Eingabe erwarten.
DevOps und CI/CD
XML-Testberichte (JUnit, NUnit, xUnit) in JSON konvertieren, um sie in Dashboards, Slack-Bots oder benutzerdefinierte CI-Benachrichtigungs-Pipelines einzuspeisen.
QA und Testing
Konvertierte JSON-Snapshots gegen erwartete Ausgabe vergleichen, um zu prüfen, ob ein XML-produzierender Dienst seine Antwortstruktur zwischen Releases nicht verändert hat.
Data Engineering
XML-Exporte aus Behördenportalen, Finanz-Feeds (FIX, FIXML) oder Gesundheitssystemen (HL7 CDA) in JSON konvertieren, um sie in BigQuery, Snowflake oder Elasticsearch zu laden.
Datenformate lernen
Studenten, die Datenaustauschformate studieren, können XML-Beispiele in den Konverter einfügen, um zu sehen, wie Elemente, Attribute und Verschachtelungen auf JSON-Schlüssel, Objekte und Arrays abgebildet werden.

XML-zu-JSON-Mapping-Referenz

XML und JSON haben unterschiedliche Datenmodelle. Die Tabelle unten zeigt, wie jedes XML-Konstrukt nach der verbreitetsten Konvention (@ für Attribute, #text für Text neben Attributen) auf sein JSON-Äquivalent abgebildet wird. Einige Konstrukte wie gemischter Inhalt und Kommentare haben keine standardisierte JSON-Darstellung.

XML-KonstruktXML-BeispielJSON-Äquivalent
Element<name>text</name>"name": "text"
Nested elements<a><b>1</b></a>"a": { "b": "1" }
Attributes<el attr="v"/>"el": { "@attr": "v" }
Text + attributes<el a="1">text</el>"el": { "@a": "1", "#text": "text" }
Repeated elements<r><i>1</i><i>2</i></r>"r": { "i": ["1", "2"] }
Mixed content<p>A <b>B</b> C</p>Varies by convention
CDATA<![CDATA[raw]]>"#cdata": "raw" or flattened
Namespacesxmlns:prefix="uri"Prefix preserved or stripped
Empty element<el/>"el": null or ""
Comments<!-- note -->Discarded (no JSON equivalent)

XML-zu-JSON-Konventionen im Vergleich

Es gibt keinen einheitlichen Standard, der festlegt, wie XML auf JSON abgebildet wird. Drei Konventionen sind weit verbreitet, jede mit unterschiedlichen Kompromissen bei der Behandlung von Attributen, Array-Erkennung und Texterhaltung.

BadgerFish
Jeder Textknoten wird in einen $-Schlüssel abgelegt. Attribute erhalten @-Präfix-Schlüssel. Namensräume werden als @xmlns-Einträge bewahrt. Ausführlich, aber verlustfrei: Ein Rück-Roundtrip nach XML ist ohne Datenverlust möglich.
Parker
Entfernt Attribute vollständig und wandelt reine Textelemente in direkte Werte um. Wiederholte Elemente werden zu Arrays. Kompakt und übersichtlich, aber destruktiv: Attribute und Namensrauminformationen gehen verloren.
GData (Google Data)
Verwendet $t für Textinhalt und bewahrt Attribute als Schlüssel auf oberster Ebene ohne Präfix. Ein Mittelweg zwischen der Ausführlichkeit von BadgerFish und der Kompaktheit von Parker. Wurde historisch in Google-APIs verwendet.

Code-Beispiele

Nachfolgend finden Sie funktionierende Beispiele für die Konvertierung von XML zu JSON in JavaScript, Python, Go und auf der Kommandozeile. Jedes Beispiel behandelt verschachtelte Elemente und wiederholte Geschwister-Tags.

JavaScript (browser)
// Using the DOMParser API to walk XML and build a JSON object
function xmlToJson(xml) {
  const parser = new DOMParser()
  const doc = parser.parseFromString(xml, 'application/xml')

  function nodeToObj(node) {
    const obj = {}
    // Handle attributes
    if (node.attributes) {
      for (const attr of node.attributes) {
        obj['@' + attr.name] = attr.value
      }
    }
    // Handle child nodes
    for (const child of node.childNodes) {
      if (child.nodeType === 3) { // text
        const text = child.textContent.trim()
        if (text) obj['#text'] = text
      } else if (child.nodeType === 1) { // element
        const key = child.nodeName
        const val = nodeToObj(child)
        if (obj[key]) {
          if (!Array.isArray(obj[key])) obj[key] = [obj[key]]
          obj[key].push(val)
        } else {
          obj[key] = val
        }
      }
    }
    // Simplify text-only nodes
    const keys = Object.keys(obj)
    if (keys.length === 1 && keys[0] === '#text') return obj['#text']
    return obj
  }

  return nodeToObj(doc.documentElement)
}

const xml = '<user><name>Alice</name><role>admin</role></user>'
console.log(JSON.stringify(xmlToJson(xml), null, 2))
// → { "name": "Alice", "role": "admin" }
Python
import xmltodict
import json

xml = """
<user>
  <name>Alice</name>
  <roles>
    <role>admin</role>
    <role>editor</role>
  </roles>
</user>
"""

# xmltodict converts XML to an OrderedDict
result = xmltodict.parse(xml)
print(json.dumps(result, indent=2))
# → {
# →   "user": {
# →     "name": "Alice",
# →     "roles": { "role": ["admin", "editor"] }
# →   }
# → }

# With the standard library (xml.etree.ElementTree)
import xml.etree.ElementTree as ET

def etree_to_dict(elem):
    d = {}
    if elem.attrib:
        d.update({f"@{k}": v for k, v in elem.attrib.items()})
    for child in elem:
        child_data = etree_to_dict(child)
        if child.tag in d:
            if not isinstance(d[child.tag], list):
                d[child.tag] = [d[child.tag]]
            d[child.tag].append(child_data)
        else:
            d[child.tag] = child_data
    if elem.text and elem.text.strip():
        if d:
            d["#text"] = elem.text.strip()
        else:
            return elem.text.strip()
    return d

root = ET.fromstring(xml)
print(json.dumps(etree_to_dict(root), indent=2))
Go
package main

import (
    "encoding/json"
    "encoding/xml"
    "fmt"
    "strings"
)

// For simple, known schemas — define a struct
type User struct {
    XMLName xml.Name `xml:"user"`
    Name    string   `xml:"name"`
    Roles   []string `xml:"roles>role"`
}

func main() {
    data := `<user><name>Alice</name><roles><role>admin</role><role>editor</role></roles></user>`
    var user User
    xml.NewDecoder(strings.NewReader(data)).Decode(&user)

    out, _ := json.MarshalIndent(user, "", "  ")
    fmt.Println(string(out))
    // → { "Name": "Alice", "Roles": ["admin", "editor"] }
}
CLI (xmllint + jq / yq)
# Using xq (part of yq, a jq wrapper for XML)
# Install: pip install yq  OR  brew install yq
echo '<user><name>Alice</name></user>' | xq .
# → { "user": { "name": "Alice" } }

# Using xmlstarlet + jq
xmlstarlet sel -t -v '//name' input.xml | jq -R '{ name: . }'

# Node.js one-liner with xml2js
echo '<a><b>1</b></a>' | node -e "
  const {parseString} = require('xml2js');
  let d=''; process.stdin.on('data',c=>d+=c);
  process.stdin.on('end',()=>parseString(d,(e,r)=>console.log(JSON.stringify(r,null,2))))
"

Häufig gestellte Fragen

Ist die XML-zu-JSON-Konvertierung verlustfrei?
Nicht immer. XML-Attribute, Kommentare, Verarbeitungsanweisungen und Namensraumdeklarationen haben kein direktes JSON-Äquivalent. Die meisten Konverter bewahren Attribute über eine @-Präfix-Konvention, Kommentare und Verarbeitungsanweisungen werden jedoch verworfen. Wenn Sie einen vollständig umkehrbaren Roundtrip benötigen, verwenden Sie eine verlustfreie Konvention wie BadgerFish.
Wie werden XML-Attribute in JSON dargestellt?
Der verbreitetste Ansatz ist, Attributnamen mit @ zu präfixieren. Zum Beispiel wird <book id="1"> zu {"@id": "1"}. Manche Konverter verwenden stattdessen ein verschachteltes "_attributes"-Objekt. Die konkrete Konvention hängt von der verwendeten Bibliothek ab.
Wie behandelt der Konverter wiederholte XML-Elemente?
Wenn ein Element mehr als einmal unter demselben übergeordneten Element vorkommt, gruppiert der Konverter sie zu einem JSON-Array. Zwei item-Geschwister werden zum Beispiel zu {"item": ["a", "b"]}. Ein einzelnes item-Element bleibt als einfacher Zeichenkettenwert, sofern der Force-Array-Modus nicht aktiviert ist.
Kann ich JSON wieder in XML konvertieren?
Ja, aber das Ergebnis hängt von der bei der ursprünglichen Konvertierung verwendeten Konvention ab. Wurden Attribute mit @-Präfixen bewahrt, kann ein JSON-zu-XML-Konverter sie rekonstruieren. Wurde die ursprüngliche Konvertierung mit Parker durchgeführt (das Attribute verwirft), sind diese Informationen verloren. ToolDeck bietet auch ein JSON-zu-XML-Tool für die umgekehrte Richtung an.
Was passiert mit XML-Namensräumen bei der Konvertierung?
Die Behandlung von Namensräumen variiert je nach Bibliothek. Manche Konverter bewahren das Präfix im Schlüsselnamen (z. B. "ns:element"), andere bilden xmlns-Deklarationen auf separate Felder ab, und einige entfernen Namensräume vollständig. Prüfen Sie die Ausgabe für Ihr konkretes XML, um das Namensraum-Verhalten zu überprüfen.
Gibt es einen Standard für XML-zu-JSON-Konvertierung?
Es gibt keinen formalen W3C- oder IETF-Standard. Die nächsten Referenzen sind die BadgerFish-Konvention, die Parker-Konvention und das OASIS XSLT-to-JSON-Mapping. In der Praxis implementiert jede Bibliothek ihre eigenen Regeln, weshalb dasselbe XML in verschiedenen Tools leicht unterschiedliches JSON erzeugen kann.
Wie gehe ich mit großen XML-Dateien um?
Browserbasierte Konverter funktionieren gut für Dateien bis zu einigen Megabyte. Für größere Dateien (10 MB+) empfiehlt sich ein Streaming-Parser wie Pythons iterparse (xml.etree.ElementTree) oder Node.js xml-stream. Diese verarbeiten das Dokument schrittweise, ohne den gesamten Baum in den Arbeitsspeicher zu laden.