Wat is XML ↔ JSON-conversie?
XML (Extensible Markup Language) is een op tags gebaseerd tekstformaat voor hiërarchische gegevens. Je ziet het in SOAP-webservices, RSS- en Atom-feeds, HL7 FHIR-gezondheidsdossiers, sitemap.xml-bestanden en de configuratiebestanden die worden geleverd bij Maven, Spring en Android Gradle. JSON (JavaScript Object Notation, gedefinieerd door RFC 8259) beschrijft hetzelfde soort geneste gegevens, maar met accolades en arrays in plaats van openings- en sluitingstags. JSON is wat bijna elke REST API tegenwoordig spreekt, en het is de native waardevorm van elke browserruntime. Converteren tussen de twee formaten klinkt triviaal totdat je attributen, gemengde inhoud, herhaalde kinderen en CDATA tegenkomt. Een aangepaste regex is het verkeerde antwoord; een echte parser is het juiste. Deze tool levert een echte parser (fast-xml-parser) en draait hem in je browser, zodat je een XML-envelop teruggegeven door een verouderde SOAP-service kunt plakken en hem als JSON-object kunt zien worden — klaar om direct in een Redux-store te zetten — of een JSON-payload die je in een REST-client hebt samengesteld kunt omzetten naar de XML-vorm die een enterprise-eindpunt nog steeds verwacht.
Hoe XML ↔ JSON-mapping werkt
Elke conversie draait lokaal in je browser met behulp van de gebundelde fast-xml-parser-bibliotheek (MIT, versie 4.x). De mapping-regels op hoog niveau zijn:
- Element naar sleutel: elke XML-elementnaam wordt een JSON-objectsleutel.
<user><name>Alice</name></user>mapt naar{"user":{"name":"Alice"}}. - Attribuut naar voorziene sleutel: een attribuut wordt opgeslagen onder een sleutel gevormd door de gekozen prefix voor te voegen. Met prefix
@produceert<user id="1">{"user":{"@id":"1"}}. - Tekstinhoud naar tekstknooppuntsleutel: wanneer een element zowel attributen als tekst heeft, landt de tekst onder de gekozen tekstknooppuntsleutel.
<price currency="USD">9.99</price>met sleutel#textproduceert{"price":{"@currency":"USD","#text":"9.99"}}. - Herhaalde kinderen naar array: wanneer Array forceren voor herhaalde onderliggende tags aan staat, vouwen meerdere broer-en-zusselementen met dezelfde naam samen in een JSON-array.
<items><item>A</item><item>B</item></items>wordt{"items":{"item":["A","B"]}}. - CDATA-secties: de onbewerkte tekst binnen
<![CDATA[…]]>wordt bewaard onder de#cdata-sleutel zodat punthaken en ampersands niet opnieuw worden geescaped tijdens de round-trip. - JSON naar XML keert de mapping om: objectsleutels worden elementen, voorziene sleutels worden attributen en arrays worden uitgebreid naar herhaalde broer-en-zuselementen.
Waarom XML en JSON converteren met deze tool?
- Je gegevens blijven op je machine. Elke parse en elke build draait in de JavaScript-context van deze pagina. FHIR-patiëntbundels, SOAP-authenticatie-enveloppen, propriëtaire configuratiebestanden, factureringexports — geen ervan raakt onze servers, omdat er geen uploadstap in het codepad zit. Open het netwerkpaneel en kijk mee.
- Legacy SOAP in een REST-first-frontend is de meest voorkomende vraag. Een bank of verzekeraar stelt een SOAP-eindpunt beschikbaar dat niet snel wordt uitgefaseerd; de React- of Vue-app die het aanroept wil geen XML leren. Plak de envelop, krijg de JSON terug met attributen voorzien van een prefix en namespaces bewaard, en zet de
Body-inhoud in je toestandsopslag. - RSS-, Atom- en sitemap-consumenten profiteren ook. Een podcastgids, een nieuwsaggregator of een intern dashboard dat
sitemap.xmlinneemt, kan het schrijven van een XML-parser volledig overslaan. Converteer de feed eenmaal, werk met de JSON-array en je clientcode blijft in de taal die hij al spreekt. - Configuratie-export rondt de lijst af. Maven, Spring, Android Gradle en oude Ant-builds sturen allemaal XML uit; de cloud-native tooling aan de andere kant (Terraform, Ansible, GitHub Actions, cloud-init) leest JSON of YAML. Converteer in de browser in plaats van een Python-script met een externe afhankelijkheid te draaien — vooral nuttig in air-gapped omgevingen waar plakken in een onbekende webservice geen optie is.
Wat zijn veelvoorkomende toepassingen van XML ↔ JSON-conversie?
XML en JSON overbruggen duikt op in integratie-engineering, API-tooling en data-engineering. Een paar patronen domineren het werk:
- SOAP-naar-REST-overbrugging: de
Body-payload halen uit een SOAP-envelop teruggegeven door een verouderde bank- of verzekeraar-API en hem naar JSON converteren zodat een React- of Vue-frontend hem kan consumeren zonder een serverzijdige proxylayer. - FHIR-gezondheidsdossiers: HL7 FHIR XML-bundels (het formaat vereist door HHS/ONC en NHS Digital voor klinische gegevensuitwisseling) converteren naar JSON voor laden in een MongoDB Atlas-collectie of een PostgreSQL JSONB-kolom waar analisten ze kunnen bevragen.
- Sitemap- en feedverwerking: een
sitemap.xmlof een RSS/Atom-feed omzetten naar een JSON-array zodat een aangepaste indexeerder, een Slack-bot of een dashboard-widget de items kan doorlopen zonder een XML-parser als afhankelijkheid te installeren.
Hoe ziet een XML ↔ JSON round-trip eruit?
Neem een klein voorbeeld. Plak <user id="1"><name>Alice</name></user> in de invoer, stel attribuutprefix in op @, laat de modus op XML naar JSON staan en druk op Converteren. De uitvoer is {"user":{"@id":"1","name":"Alice"}}. Draai de modus om naar JSON naar XML, plak die JSON terug, stel inspringing in op 2 spaties en druk opnieuw op Converteren. Je krijgt <user id="1">\n <name>Alice</name>\n</user>, structureel identiek aan het origineel. Het enige dat niet gegarandeerd is over de round-trip is de attribuutvolgorde, omdat JSON-objectsleutels per specificatie ongeordend zijn.
Deze XML ↔ JSON-converter levert fast-xml-parser@4 gebundeld op dezelfde origin, verwerkt attributen, CDATA, herhaalde onderliggende tags en namespace-prefixen, en blijft offline werken zodra de pagina is geladen. Geen uploadstap, geen CDN-proxy, geen analytics-beacon, geen telemetrie van welke aard dan ook. Elke byte invoer en uitvoer blijft in je browser — precies wat je wilt wanneer de payload toevallig een FHIR-patiëntbundel, een SOAP-authenticatie-envelop of een andere gegevensvorm is die niemand buiten je team ooit mag zien.