XML naar JSON Omzetter
Plak XML en krijg direct JSON. Converteert attributen naar @_-sleutels, verwerkt herhaalde elementen als arrays. 100% in de browser, niets geüpload, geen aanmelding.
Opties · 2 spaties · XML → JSON
Wat is XML-naar-JSON-conversie en hoe werkt het?
XML (Extensible Markup Language) en JSON (JavaScript Object Notation) zijn beide gestructureerde dataformaten, maar ze hebben fundamenteel verschillende modellen: XML is een boom van elementen met attributen en gemengde inhoud (tekst afgewisseld met kindelementen); JSON is een boom van objecten, arrays, strings, getallen, booleans en null-waarden. Voor conversie tussen beide is een set conventies nodig om het verschil te overbruggen.
Deze tool gebruikt de meest wijdverspreide conventie, dezelfde die wordt gebruikt door populaire bibliotheken zoals fast-xml-parser (Node.js), xmltodict (Python) en JAXB (Java):
**1. Attributen → prefix @_.** XML-attributen hebben geen direct JSON-equivalent. De conventie is om ze voor te stellen als sleutels met het prefix @_. Zo wordt
**2. Elementtekstinhoud met attributen → #text.** Wanneer een element zowel attributen als tekstinhoud heeft —
**3. Herhaalde nevengeschikte elementen → arrays.** XML staat meerdere kindelementen met dezelfde naam toe; JSON-objecten kunnen geen dubbele sleutels hebben. De oplossing is het samenvoegen van gelijknamige nevengeschikte elementen in een array. Één
**4. Geen type-omzetting — alle waarden blijven strings.** XML heeft geen native typesysteem voor tekstinhoud. Een waarde van "123" in XML is een string. Het converteren naar het JSON-getal 123 vereist een aanname over de intentie van de auteur — een aanname die onjuist is voor postcodes ("01234" → 1234), telefoonnummers, geopte identifiers en precisiegevoelige decimale strings. Deze tool behoudt alle waarden als strings. Pas type-omzetting toe in je eigen code voor de velden waarvan je het type kent.
**5. Verliesgevend voor commentaar, verwerkingsinstructies en naamruimten.** XML ondersteunt functies die JSON niet heeft: commentaar (), verwerkingsinstructies (), en naamruimtesemantiek. Deze worden verwijderd of benaderd tijdens conversie. Voor verliesvrij XML-werk — herformatteren, minimaliseren, valideren — gebruik de XML Formatter. Voor de omgekeerde conversie — XML opbouwen vanuit JSON — gebruik de JSON naar XML Omzetter.
**Waarom XML naar JSON converteren?** JSON is het native formaat van JavaScript en het standaard uitwisselingsformaat voor REST API's. Als je XML ontvangt van een oudere SOAP-service, een RSS-feed, een sitemap of een bedrijfssysteem, laat conversie naar JSON je toe om met de data te werken via standaard JavaScript-objecttoegang, JSON-padquery's en elke JSON-bewuste database of API. De conversie is een eenrichtingsbrug: handig voor het consumeren van XML-data in een moderne stack, maar niet voor het bewaren of heen-en-weer-converteren van XML-documenten.
// Convert XML to JSON in Node.js using fast-xml-parser
import { XMLParser } from 'fast-xml-parser';
const xml = `<catalog>
<product id="P01">
<name>Wireless Headphones</name>
<price currency="USD">79.99</price>
</product>
</catalog>`;
const parser = new XMLParser({
ignoreAttributes: false, // preserve attributes
attributeNamePrefix: '@_', // @_ prefix for attributes
textNodeName: '#text', // #text for mixed element content
parseAttributeValue: false, // no type coercion on attributes
parseTagValue: false, // no type coercion on element text
});
const result = parser.parse(xml);
console.log(JSON.stringify(result, null, 2));
// {
// "catalog": {
// "product": {
// "@_id": "P01",
// "name": "Wireless Headphones",
// "price": {
// "@_currency": "USD",
// "#text": "79.99"
// }
// }
// }
// } Kernfuncties
Live conversie
JSON-uitvoer wordt direct bijgewerkt terwijl je XML typt of plakt — geen Omzetten-knop nodig. Grote invoer (>200 KB) schakelt automatisch over naar handmatige modus om de browser responsief te houden.
@_-attribuutprefixconventie
XML-attributen worden @_-prefixed JSON-sleutels, conform de fast-xml-parser- en xmltodict-conventie.
Automatische arraydetectie voor herhaalde elementen
Gelijknamige nevengeschikte elementen worden automatisch een JSON-array. Één
Geen type-omzetting — waarden blijven strings
Alle XML-waarden worden bewaard als JSON-strings. Voorloopnullen, telefoonnummers, geopte codes en boolean-achtige strings zoals "true" of "false" worden nooit stilzwijgend omgezet naar getallen of booleans.
100% browsergebaseerde privacy
Alle conversie draait lokaal in je browser via JavaScript. Je XML — inclusief inloggegevens, interne configuraties en gevoelige payloads — wordt nooit naar een server verzonden, nooit gelogd en nooit opgeslagen.
Welgevormdheidsfoutrapportage
Als je XML niet welgevormd is, rapporteert de tool het exacte regelnummer en kolomnummer van de eerste fout, zodat je het probleem direct kunt opsporen en oplossen vóór het converteren.
Voorbeelden
Configuratiebestand
<?xml version="1.0" encoding="UTF-8"?>
<appConfig version="2.1" env="production">
<database>
<host>db.example.com</host>
<port>5432</port>
<name>myapp_prod</name>
<pool max="10" min="2"/>
</database>
<cache enabled="true">
<ttl>3600</ttl>
<driver>redis</driver>
</cache>
</appConfig> Een kleine toepassingsconfiguratie met attributen en geneste elementen. Attributen worden @_-prefixed sleutels in de JSON-uitvoer: version="2.1" wordt "@_version": "2.1" onder appConfig, en de max- en min-attributen van het pool-element worden "@_max": "10" en "@_min": "2". Alle waarden — inclusief port en ttl — blijven strings, geen getallen, want de omzetter past geen type-omzetting toe.
Sitemapfragment
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://go-tools.org/tools/xml-to-json</loc>
<lastmod>2026-05-29</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://go-tools.org/tools/json-to-xml</loc>
<lastmod>2026-05-29</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
</urlset> Een sitemap.xml-fragment met twee URL's. Omdat er twee nevengeschikte
RSS-item
<item> <title>XML to JSON: A Practical Guide</title> <link>https://go-tools.org/blog/xml-to-json-guide</link> <pubDate>Thu, 29 May 2026 00:00:00 GMT</pubDate> <category>Developer Tools</category> <description>Learn how XML attributes map to @_ keys, how repeated elements become arrays, and why values stay strings in any XML-to-JSON conversion.</description> <guid isPermaLink="true">https://go-tools.org/blog/xml-to-json-guide</guid> </item>
Een RSS 2.0-itemelement. Het guid-element heeft een isPermaLink-attribuut, dus de JSON-uitvoer voor guid wordt een object met "@_isPermaLink": "true" en "#text": "https://go-tools.org/blog/xml-to-json-guide" — het attribuut en de tekstinhoud van het element bestaan naast elkaar als nevengeschikte sleutels. Alle andere elementen hebben alleen tekstinhoud en worden direct omgezet naar stringwaarden.
Zo gebruik je het
- 1
Plak je XML
Voer je XML in of plak deze in het invoerveld hierboven. Je kunt ook op 'Voorbeeld laden' klikken om een voorbeeld te proberen — een configuratiebestand, een sitemapfragment of een RSS-item.
- 2
Bekijk de live JSON-uitvoer
JSON verschijnt direct in het uitvoerpaneel. Attributen worden @_-prefixed sleutels, tekstinhoud van gemengde elementen wordt #text, en herhaalde nevengeschikte elementen worden arrays. Pas de inspringing (2 of 4 spaties) naar wens aan.
- 3
Kopieer of download
Klik op Kopiëren om de JSON naar je klembord te halen, of op Downloaden om het op te slaan als .json-bestand dat klaar is voor je toepassing, API of datapijplijn.
Veelgemaakte fouten bij conversie
Vergeten dat waarden strings blijven
De omzetter past geen type-omzetting toe. Als je vervolgcode JSON-getallen verwacht maar de XML numerieke strings bevat, moet je ze expliciet omzetten na het converteren. Vertrouwen op impliciete string-naar-getal-omzetting (JavaScripts == of rekenkundige operatoren) is foutgevoelig — gebruik altijd parseInt(), parseFloat() of Number() bewust.
// XML: <timeout>30</timeout>
// JSON output: { "timeout": "30" } ← string, not number
// Dangerous: comparing as-is
if (config.timeout > 25) { ... } // "30" > 25 coerces, but fragile // XML: <timeout>30</timeout>
// JSON output: { "timeout": "30" }
// Safe: explicit coercion where you know the type
if (parseInt(config.timeout, 10) > 25) { ... } Afwijking tussen enkel item en arrayvorm
Wanneer er slechts één
// XML with one item: <root><item>a</item></root>
// JSON: { "root": { "item": "a" } } ← string, not array
result.root.item.forEach(i => console.log(i)); // TypeError: not a function // Normalize to array regardless of count const items = [].concat(result.root?.item ?? []); items.forEach(i => console.log(i)); // safe for 0, 1, or many
Gemengde inhoud: tekst en de sleutel #text
Wanneer een element zowel attributen als tekstinhoud heeft, gaat de tekst onder #text. De tekstwaarde openen alsof het een gewone string is, geeft een object terug. Controleer altijd of een elementwaarde een string of een object met een #text-sleutel is wanneer attributen mogelijk zijn.
// XML: <price currency="USD">29.99</price>
// JSON: { "price": { "@_currency": "USD", "#text": "29.99" } }
const amount = result.price; // { "@_currency": "USD", "#text": "29.99" }, not "29.99" // Handle both plain string and @_/#text object const raw = result.price; const amount = typeof raw === 'object' ? raw['#text'] : raw; // "29.99"
Niet-welgevormde XML-invoer
De omzetter vereist welgevormde XML. Veelvoorkomende oorzaken van welgevormdheidfouten: niet-geschreven & in tekstinhoud (gebruik &), niet-overeenkomende tags (
<!-- Unescaped & — well-formedness error --> <query>name = 'Alice' & role = 'admin'</query>
<!-- Escaped & — valid XML --> <query>name = 'Alice' & role = 'admin'</query>
Waarden met voorloopnullen beschadigd door omzetting
Deze tool behoudt voorloopnullen omdat hij geen type-omzetting toepast. Als je de JSON naverwerkt met een bibliotheek die wel omzet (sommige JSON-schemavalidators, ORM-mappers), kan de voorloopnul verloren gaan. Declareer het veldtype altijd expliciet als string in je schema.
// XML: <zipCode>01234</zipCode>
// This tool outputs: { "zipCode": "01234" } ← correct
// But if a downstream schema coerces:
// { zipCode: z.number() } → 1234 ← leading zero lost // Declare ZIP codes and other padded identifiers as strings
// { zipCode: z.string() } → "01234" ← correct Veelvoorkomende gebruiksscenario's
- SOAP / oudere XML-API's consumeren
- Oudere bedrijfsservices (bankwezen, verzekeringen, logistiek) bieden vaak SOAP-API's aan die XML retourneren. Converteer de response naar JSON om met de data te werken via moderne JavaScript-tooling, sla het op in een documentdatabase of stuur het door naar een REST API-consument.
- RSS- en Atom-feeds verwerken
- RSS 2.0- en Atom 1.0-feeds zijn XML. Converteer feed-XML naar JSON om titels, links, publicatiedatums en beschrijvingen te extraheren voor feedaggregators, inhoudspijplijnen en meldingssystemen zonder een afhankelijkheid van een XML-verwerkingsbibliotheek.
- Sitemapbestanden verwerken
- sitemap.xml-bestanden bevatten de URL's van een site met meta-data. Converteer een sitemap naar JSON om URL-dekking te analyseren, crawlwachtrijen te bouwen, sitemaps tussen omgevingen te vergelijken of URL's door te sturen naar een linkcontrole- of SEO-audittool.
- Configuratiebestanden transformeren
- Veel bedrijfssystemen (Spring, Maven, Ant, JBoss, Tomcat) gebruiken XML-configuratiebestanden. Converteer ze naar JSON voor analyse, migratiescripts, documentatiegeneratie of importeren in tools die native JSON spreken.
- Mobiele en Android-ontwikkeling
- Android-resources, layoutbestanden en AndroidManifest.xml zijn allemaal XML. Converteer ze naar JSON voor analysescripts, geautomatiseerde auditing of het genereren van documentatie over gedeclareerde machtigingen, activiteiten en resourcewaarden.
- Datamigratie en ETL
- Data-exports van bedrijfssystemen (ERP, CRM, salarisadministratie) komen vaak aan als XML. Converteer naar JSON als eerste stap in een ETL-pijplijn om de data te laden in een JSON-native dataopslag zoals MongoDB, Firestore of een REST API.
Technische details
- Browser DOMParser voor XML-verwerking
- XML-invoer wordt verwerkt via de ingebouwde DOMParser van de browser met het MIME-type 'text/xml' — dezelfde engine die wordt gebruikt voor het renderen van SVG en XHTML. Hij is volledig XML 1.0-conform en rapporteert welgevormdheidfouten met regel- en kolominformatie. Deze aanpak verwerkt naamruimten, CDATA-secties, verwerkingsinstructies en entiteitsreferenties correct zonder externe afhankelijkheid.
- Recursieve DOM-naar-JSON-serialisatie
- Na het verwerken doorloopt de tool de DOM-boom recursief. Elementknooppunten worden JSON-objecten; hun attributen worden @_-prefixed sleutels; tekst-enige elementen worden gewone stringwaarden; elementen met zowel attributen als tekstinhoud krijgen een #text-sleutel voor de tekstinhoud. Gelijknamige nevengeschikte elementen worden samengevat en als JSON-array uitgevoerd. Witruimte-tekstvelden tussen elementen worden verwijderd.
- Geen type-omzetting — stringbehoud
- Alle attribuutwaarden en tekstinhoud worden als strings naar de JSON-uitvoer geschreven. Geen parseInt, parseFloat of boolean-verwerking wordt toegepast. Dit is een bewuste ontwerpkeuze om stille databeschadiging te voorkomen voor waarden met voorloopnullen, precisiegevoelige decimalen en boolean-achtige strings. Type-omzetting, waar nodig, moet expliciet worden toegepast in vervolgcode.
- 100% browsergebaseerd — geen upload, geen server
- Alle verwerking draait in de JavaScript-engine van je browser. Er worden geen gegevens via het netwerk verzonden. Invoer groter dan 200 KB schakelt automatisch over van live-modus naar handmatige modus (waarbij een expliciete klik op Omzetten nodig is) om de browser responsief te houden en blokkering van de hoofdthread tijdens zware DOM-doorloop te voorkomen.
Aanbevolen aanpak
- Valideer eerst de welgevormdheid van XML
- Als je XML-bron handgeschreven is of gegenereerd door een systeem dat soms foutieve uitvoer produceert, valideer het dan vóór het converteren. Gebruik de knop Valideren van de XML Formatter om te bevestigen dat de XML welgevormd is en precieze foutlocaties te krijgen voor eventuele problemen.
- Normaliseer één-of-meer-velden naar arrays
- Wanneer je XML-schema zowel één als meerdere kindelementen met dezelfde naam toestaat, is de JSON-uitvoer een object voor één element en een array voor meerdere. Normaliseer deze velden altijd in je consumentcode: const items = [].concat(result.items ?? []) — dit is veilig voor nul, één of meer en voorkomt TypeErrors.
- Pas type-omzetting expliciet en selectief toe
- Omdat deze tool alle waarden als strings behoudt, pas type-omzetting bewust toe in je code voor de specifieke velden die het nodig hebben. parseInt(val, 10) gebruiken voor een bekend getalveld is veilig. Brede omzetting toepassen met Number(val) riskeert het beschadigen van waarden met voorloopnullen, lege strings en precisiegevoelige decimalen.
- Controleer op #text bij het openen van elementwaarden
- Als een element in sommige payloads attributen kan hebben en in andere niet, is zijn JSON-waarde ofwel een gewone string (geen attributen) of een object met @_-sleutels en een #text-sleutel (met attributen). Schrijf robuuste accessors: const val = typeof node === 'object' ? node['#text'] : node. Dit patroon verwerkt beide vormen en vermijdt stille undefined-waarden.
- Gebruik de XML Formatter voor verliesvrij XML-werk
- XML-naar-JSON-conversie verwijdert commentaar, verwerkingsinstructies en naamruimtesemantiek. Als je alle XML-inhoud exact wilt bewaren, gebruik dan de XML Formatter om te verfraaien, minimaliseren en valideren zonder enig verlies. Converteer naar JSON alleen wanneer je met de data wilt werken in een JSON-native context.
Veelgestelde vragen
Wordt mijn XML-data naar een server verzonden wanneer ik deze tool gebruik?
Hoe worden XML-attributen weergegeven in de JSON-uitvoer?
Past de omzetter getallen of booleans aan?
Hoe worden herhaalde (gelijknamige nevengeschikte) elementen verwerkt?
Is XML-naar-JSON-conversie verliesvrij?
Hoe zet ik JSON terug naar XML?
Wat gebeurt er met XML-naamruimten?
Waarom wordt 0123 "0123" en niet 123?
Wat is het verschil tussen deze tool en een XML-formatter?
Is er een bestandsgroottelimiet?
Verwerkt de omzetter CDATA-secties?
Kan ik XML met meerdere rootelementen converteren?
Gerelateerde tools
Alle tools bekijken →Base64 decoderen en encoderen online
Encodering en formattering
Base64 decoderen en encoderen direct in je browser. Realtime conversie met volledige UTF-8- en emoji-ondersteuning. 100% privé — geen account nodig.
CSV naar JSON omzetter
Encodering en formattering
Zet CSV om naar JSON in uw browser. RFC 4180, type-afleiding, headerregel, big-int veilig. 100% privé, geen upload.
JSON Diff (Vergelijken)
Encodering en formattering
Vergelijk twee JSON-bestanden direct in je browser. Zij-aan-zij markering, RFC 6902 JSON Patch-uitvoer, negeer storende velden zoals tijdstempels en ID's. 100% privé, geen upload.
Online JSON-formatter & validator
Encodering en formattering
Formatteer en valideer JSON direct in je browser. Gratis online tool met syntaxvalidatie, foutdetectie, minificeren en kopiëren met één klik. 100% privé.
JSON Schema-validator
Encodering en formattering
Valideer JSON tegen elk JSON Schema direct in je browser. Ondersteunt Draft 2020-12, 2019-09 en Draft-07 met padnauwkeurige foutmeldingen. 100% privé — geen upload, geen account, gratis.
JSON naar CSV omzetter
Encodering en formattering
Zet JSON om naar CSV in je browser. RFC 4180-, Excel-EU-, TSV- en Pipe-presets. Geneste data afvlakken of als string. 100% privé, geen upload.