XML ⇄ JSON-converter
Bidirectionele XML ↔ JSON met attribuutbeheer, CDATA-behoud, BOM, regeleinde- en inspring-controle
Invoer
Uitvoer
XML ⇄ JSON-converter
Bidirectionele XML ↔ JSON met attribuutbeheer, CDATA-behoud, BOM, regeleinde- en inspring-controle
Functies
- Auto-detectiemodus snuffelt of de geplakte tekst XML of JSON is en draait de conversie in de tegengestelde richting — plak een willekeurige kant zonder modus handmatig te wisselen
- Twee attribuutstrategieën: Prefixmodus emit XML-attributen met een configureerbare prefix (standaard `@`) als JSON-zustersleutels; Objectmodus verzamelt ze in een aparte `$`-object, zodat elementtekst en attributen nooit botsen
- CDATA- en tekstknoop-behandeling: met "Behandel CDATA/tekst als #text" aan wordt element-tekstinhoud opgevouwen tot een `#text`-eigenschap; gemixte inhoud overleeft de JSON-round-trip; uit behoudt structurele onderscheid
- Pretty-print-toggle met selecteerbare inspring (2 / 4 / 8 spaties) voor JSON- en XML-uitvoer — aan voor menselijk lezen, uit voor compact transport
- Regeleindecontrole (LF vs CRLF) voor Unix-vs-Windows-toolingcompatibiliteit, plus optionele UTF-8 BOM-toggle voor systemen die de byte-order mark vereisen
- Configureerbare attribuutprefix laat je downstream-conventies matchen: `@` (standaard), `_`, `xml:` of een andere string — houdt de geconverteerde uitvoer drop-in compatibel met je bestaande pipeline
- Eén-klik Kopiëren en Downloaden (`converted.txt`) voor de uitvoer; conversiefouten verschijnen inline met de onderliggende parser-melding — je weet of de XML malformd was of de JSON niet representeerbaar als XML
- Puur client-side: parsing via DOMParser voor XML en JSON.parse voor JSON. Geen netwerkaanroepen, werkt offline na cachen van de pagina
Hoe te gebruiken
- Plak je XML of JSON in het Invoer-paneel. Met Modus op Auto-detectie snuffelt de converter het formaat automatisch.
- Pas de Pretty-toggle en Inspring-grootte aan om opmaak te sturen; toggle Regeleinde tussen LF en CRLF zoals je downstream-tools vereisen.
- Open Geavanceerde instellingen om Attribuutmodus (Prefix of Object), Attribuutprefix en CDATA/tekst-#text te kiezen.
- Klik Converteren. Het Uitvoer-paneel toont het resultaat; conversie draait in je browser via DOMParser + JSON.parse.
- Gebruik Kopiëren voor je klembord, of Downloaden om als `converted.txt` op te slaan.
- Als parsing faalt, toont een inline foutregel de onderliggende melding — fix de invoer en converteer opnieuw.
Tips en best practices
- Bij debuggen van een XML-payload van een SOAP-service geven Auto-detectie + Object-attribuutmodus + CDATA-#text de schoonste JSON-weergave.
- Zet Regeleinde op CRLF en schakel de BOM in bij uitvoer bedoeld voor legacy Windows-tooling.
- Wissel Attribuutprefix van `@` naar `_` als je JSON-consumers sleutels weigeren die met `@` beginnen (sommige YAML-afgeleide parsers doen dit).
- Als JSON-naar-XML-uitvoer elementen in de verkeerde volgorde plaatst, voeg je top-level-sleutels in de bron-JSON opnieuw in in de gewenste volgorde.
- Combineer met JSON Formatter wanneer je de geconverteerde JSON verder wilt inspecteren of transformeren; XML Formatter aan de XML-kant.
Veelgestelde vragen
Hoe verandert de Attribuutmodus de JSON-uitvoer?
In Prefixmodus verschijnen XML-attributen als zustersleutels met de geconfigureerde prefix — `<user id="42"/>` wordt `{ "user": { "@id": "42" } }`. In Objectmodus worden attributen verzameld onder één `$`-sleutel, zodat element-inhoud en attribuut-inhoud geen namespace delen. Kies Prefix wanneer consumers platte sleutels verwachten; kies Object wanneer je attributen zonder ambiguïteit terug naar XML moet round-trippen.
Waarvoor is CDATA-als-#text?
XML heeft twee manieren om tekst te dragen — `<a>plain</a>` en `<a><![CDATA[plain]]></a>`. Met de optie aan vallen beide vormen samen tot een `#text`-sleutel in JSON; gemengde inhoud zoals `<p>Hallo <b>wereld</b></p>` overleeft de round-trip. Uit behoudt structurele onderscheid; handig als de oorspronkelijke CDATA-markeringen semantisch betekenisvol zijn (bv. ingebedde scripts).
Waarom doet de BOM-toggle ertoe?
Sommige Windows-tools (Excel, oudere PowerShell, .NET TextReader zonder expliciete encoding) verwachten een UTF-8 BOM (`EF BB BF`) aan het begin van een bestand. Moderne web-tooling en Unix-pipelines behandelen de BOM meestal als ruis. Schakel de toggle aan voor BOM-bewuste Windows-tools, uit voor alle andere.
Waarom LF vs CRLF?
Windows-tools en oudere Microsoft-formaten verwachten `\r\n` (CRLF); Unix/Linux/macOS gebruiken `\n` (LF) standaard. Git normaliseert beide meestal, maar artefacten die git omzeilen (downloads, plakwerk in Notepad, build-uitvoer) hebben de expliciete keuze nodig. De Auto-detectie-parser negeert regeleindes; deze controle beïnvloedt alleen de uitvoer.
Overleven namespaces de conversie?
Namespace-geprefixte element- en attribuutnamen round-trippen als letterlijke strings (bv. `xmlns:soap` wordt de sleutel `@xmlns:soap`). De converter lost namespaces niet op tegen URI's — als je downstream-pipeline namespace-oplossing nodig heeft, doe die stap apart. Round-trip terug naar XML behoudt de prefixes waarmee je begon.
Wat gebeurt er met lege elementen?
Een leeg XML-element `<a/>` wordt `{ "a": null }` in JSON (of `{ "a": "" }` als het `<a></a>` was met lege tekst en CDATA-#text aan). Bij JSON naar XML emit een `null`-waarde een zelfsluitend element. Round-trip is stabiel zolang je de CDATA-#text-instelling niet wisselt tussen de twee richtingen.
Waarom heeft mijn JSON-naar-XML-uitvoer geordende sleutels?
XML-elementen hebben een gedefinieerde volgorde; JavaScript-objecten bewaren invoegvolgorde voor string-sleutels, dus de converter schrijft elementen in de volgorde waarin hun sleutels in JSON verschenen. Komt de JSON uit een JSON.parse-round-trip, dan matcht de volgorde de bron; programmatisch gebouwd, stuur volgorde door sleutels in de gewenste volgorde in te voegen.
Zijn grote documenten veilig om hier te converteren?
Middel-megabyte documenten converteren ruim onder een seconde. Zeer grote (>10 MB) werken, maar pinnen de UI-thread tijdens parsen; voor die last, draai dezelfde logica in een Web Worker of build-time-script. De conversieservice is in beide contexten dezelfde.