XML to JSON

XML naar JSON-formaat converteren

Probeer een voorbeeld

XML-invoer

JSON-uitvoer

Draait lokaal · Veilig om secrets te plakken
JSON verschijnt hier…

Wat is XML naar JSON-conversie?

XML naar JSON-conversie is het proces van het omzetten van gegevens uit Extensible Markup Language (XML) naar JavaScript Object Notation (JSON). Beide formaten stellen gestructureerde, hiërarchische gegevens voor, maar gebruiken een andere syntaxis en een ander gegevensmodel. XML gebruikt openings- en sluitingstags met optionele attributen, terwijl JSON sleutel-waardeparen, arrays en primitieve typen gebruikt. XML naar JSON converteren stelt u in staat XML-gegevens te gebruiken in omgevingen waar JSON het native formaat is, zoals JavaScript-runtimes, REST API's en NoSQL-databases.

De conversie is niet altijd één-op-één. XML heeft constructies zonder directe JSON-equivalent: attributen, gemengde inhoud (tekst afgewisseld met onderliggende elementen), verwerkingsinstructies, opmerkingen, CDATA-secties en naamruimtedeclaraties. Verschillende conversiebibliotheken verwerken deze constructies op een andere manier, wat de reden is dat er meerdere conventies bestaan. De meest gebruikelijke aanpak voegt een @-voorvoegsel toe aan attribuutnamen en plaatst tekstinhoud in een #text-veld wanneer er attributen aanwezig zijn op hetzelfde element.

XML naar JSON-conversie is een veelvoorkomende stap bij het migreren van SOAP naar REST, het gebruiken van verouderde enterprise-API's, of het verwerken van overheids- en financiële datafeeds die XML verplichten. In plaats van producenten en consumenten tegelijkertijd te herschrijven, converteren teams de XML-payload op de grenslaag en geven JSON door aan de volgende stap. AWS API Gateway, Apache Camel en MuleSoft ondersteunen dit patroon allemaal van nature.

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"
      }
    ]
  }
}

Waarom een online XML naar JSON-converter gebruiken?

Een eenmalig conversiescript schrijven kost tijd, vooral wanneer de XML attributen, naamruimten of herhaalde elementen bevat die JSON-arrays moeten worden. Een browsergebaseerde converter geeft u de JSON-uitvoer in seconden, zodat u de structuur kunt inspecteren en verder kunt gaan.

Directe conversie
Plak XML en ontvang direct JSON-uitvoer. Geen bibliotheek installeren, geen script schrijven, geen bouwstap configureren.
🔒
Privacy-eerste verwerking
De volledige conversie wordt uitgevoerd in uw browser met JavaScript. Uw XML-gegevens verlaten uw apparaat nooit en worden nooit naar een server geüpload.
🔀
Verwerkt attributen en arrays
Attributen worden omgezet naar sleutels met @-voorvoegsel. Herhaalde nevenliggende elementen worden automatisch gegroepeerd in JSON-arrays, volgens de Parker- of BadgerFish-conventie.
📋
Geen account vereist
Open de pagina, plak uw XML en kopieer het JSON-resultaat. Geen aanmelding, geen API-sleutel, geen gebruikslimieten.

Toepassingen van XML naar JSON-conversie

Front-endontwikkeling
Converteer XML API-responses naar JSON zodat u gegevens kunt weergeven in React-, Vue- of Angular-componenten zonder een XML-parserbibliotheek aan uw client-bundle toe te voegen.
Back-endengineering
Transformeer SOAP-payloads, RSS/Atom-feeds of XML-RPC-responses naar JSON op de API-gatewaylaag voordat gegevens worden doorgegeven aan microservices die JSON-invoer verwachten.
DevOps en CI/CD
Converteer XML-testrapportages (JUnit, NUnit, xUnit) naar JSON voor verwerking door dashboards, Slack-bots of aangepaste CI-meldingspipelines.
QA en testen
Vergelijk geconverteerde JSON-snapshots met verwachte uitvoer om te controleren of een XML-producerende service de responsstructuur niet heeft gewijzigd tussen releases.
Data-engineering
Converteer XML-exports van overheidsportalen, financiële feeds (FIX, FIXML) of zorgsystemen (HL7 CDA) naar JSON voor laden in BigQuery, Snowflake of Elasticsearch.
Gegevensformaten leren
Studenten die gegevensuitwisseling bestuderen, kunnen XML-voorbeelden in de converter plakken om precies te zien hoe elementen, attributen en nesting overeenkomen met JSON-sleutels, objecten en arrays.

XML naar JSON-toewijzingsreferentie

XML en JSON hebben verschillende gegevensmodellen. De tabel hieronder toont hoe elke XML-constructie overeenkomt met zijn JSON-equivalent onder de meest gebruikelijke conventie (@ voor attributen, #text voor tekst naast attributen). Sommige constructies, zoals gemengde inhoud en opmerkingen, hebben geen standaard JSON-representatie.

XML-constructieXML-voorbeeldJSON-equivalent
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 naar JSON-conventies vergeleken

Er is geen enkele standaard die bepaalt hoe XML naar JSON wordt omgezet. Drie conventies zijn breed gebruikt, elk met andere afwegingen voor de verwerking van attributen, arraydetectie en tekstbehoud.

BadgerFish
Elk tekstknooppunt gaat in een $-sleutel. Attributen krijgen sleutels met @-voorvoegsel. Naamruimten worden bewaard als @xmlns-vermeldingen. Uitgebreid maar verliesvrij: u kunt teruggaan naar XML zonder gegevens te verliezen.
Parker
Verwijdert attributen volledig en converteert elementen met alleen tekst naar kale waarden. Herhaalde elementen worden arrays. Compact en overzichtelijk, maar destructief: attributen en naamruimte-informatie worden weggegooid.
GData (Google Data)
Gebruikt $t voor tekstinhoud en bewaart attributen als sleutels op het hoogste niveau zonder voorvoegsel. Een middenweg tussen de uitgebreidheid van BadgerFish en de eenvoud van Parker. Historisch gebruikt in Google API's.

Codevoorbeelden

Hieronder staan werkende voorbeelden voor het converteren van XML naar JSON in JavaScript, Python, Go en op de opdrachtregel. Elk voorbeeld verwerkt geneste elementen en herhaalde nevenliggende 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))))
"

Veelgestelde vragen

Is XML naar JSON-conversie verliesvrij?
Niet altijd. XML-attributen, opmerkingen, verwerkingsinstructies en naamruimtedeclaraties hebben geen directe JSON-equivalent. De meeste converters bewaren attributen via een @-voorvoegselconventie, maar opmerkingen en verwerkingsinstructies worden weggegooid. Als u een volledig omkeerbare conversie nodig hebt, gebruik dan een verliesvrije conventie zoals BadgerFish.
Hoe worden XML-attributen weergegeven in JSON?
xmlToJsonContent.a2
Hoe verwerkt de converter herhaalde XML-elementen?
Wanneer een element meer dan eens voorkomt onder hetzelfde bovenliggende element, groepeert de converter ze in een JSON-array. Zo worden twee nevenliggende item-elementen omgezet naar {"item": ["a", "b"]}. Een enkel item-element blijft een gewone tekenreekswaarde, tenzij de modus voor verplichte arrays is ingeschakeld.
Kan ik JSON terug naar XML converteren?
Ja, maar het resultaat hangt af van de conventie die tijdens de oorspronkelijke conversie is gebruikt. Als attributen zijn bewaard met @-voorvoegsels, kan een JSON naar XML-converter ze reconstrueren. Als de oorspronkelijke conversie Parker heeft gebruikt (waarbij attributen worden weggegooid), is die informatie verloren. ToolDeck heeft ook een JSON naar XML-tool voor de omgekeerde richting.
Wat gebeurt er met XML-naamruimten tijdens conversie?
Naamruimteverwerking verschilt per bibliotheek. Sommige converters bewaren het voorvoegsel in de sleutelnaam (bijv. "ns:element"), andere zetten xmlns-declaraties om naar afzonderlijke velden, en sommige verwijderen naamruimten volledig. Controleer de uitvoer voor uw specifieke XML om het naamruimtegedrag te verifiëren.
Is er een standaard voor XML naar JSON-conversie?
Er is geen formele W3C- of IETF-standaard. De dichtstbijzijnde referenties zijn de BadgerFish-conventie, de Parker-conventie en de OASIS XSLT-naar-JSON-toewijzing. In de praktijk implementeert elke bibliotheek zijn eigen regels, waardoor dezelfde XML in verschillende tools licht verschillende JSON kan opleveren.
Hoe verwerk ik grote XML-bestanden?
Browsergebaseerde converters werken goed voor bestanden tot een paar megabyte. Voor grotere bestanden (10 MB+), gebruik een streaming-parser zoals Python's iterparse (xml.etree.ElementTree) of Node.js xml-stream. Deze verwerken het document incrementeel zonder de volledige boomstructuur in het geheugen te laden.