JavaScript naar XML Converter
Plak een JavaScript object, class of instance. Je krijgt schone XML terug.
Wat deze tool doet
Als je ooit handmatig een XML-payload hebt moeten fabrieken om te matchen met een JavaScript-object — voor een SOAP-service, een RSS-feed, een sitemap of een test fixture — ken je de pijn. XMLSerializer heeft een DOM nodig, DOMParser gaat de andere kant op, en elementen met de hand in elkaar zetten betekent dat je de eerste drie keer een child vergeet. Plak het JS hier in en krijg in één keer well-formed XML terug. Werkt met een plain object, een ES6 class plus new instance, of iets wat diep genest is.
Het snapt hoe JS-waarden daadwerkelijk naar XML mappen. Getallen en booleans worden hun string-vorm. Date-objecten komen er als ISO-8601 uit. BigInt wordt als decimale string uitgespuugd (zonder de n-suffix). null- en undefined-velden worden lege elementen in plaats van dat ze gedumpt worden, zodat de vorm van je output stabiel blijft. Arrays worden container-elementen met één child per item, genoemd naar de parent-key in enkelvoud — een items-array in Order wordt <items><item>...</item></items>, tenzij de array typed class-instances bevat: dan wordt de class-naam gebruikt.
Class-definities worden ook afgehandeld. Een class Order { constructor(...) { this.x = ...; } } plus const order = new Order(...) geeft je een <Order>-root met elke property die in de constructor is toegewezen. Geneste class-instances worden geneste elementen. Methods, getters, Symbol-keyed properties en properties die met # beginnen (private fields) worden overgeslagen. Als je alleen een plain object literal plakt, wordt dat direct geserialiseerd met een zinnige root-elementnaam.
Hoe je het gebruikt
Drie stappen. Werkt hetzelfde of je nou een kort literal of een hele module plakt.
Plak je JavaScript (of probeer het voorbeeld)
Gooi je JS zoals het is in de linker editor. Een plain object literal, een ES6 class + instance, een return uit een factory function, of een module-export van Node.js — alles is goed. Klik op Load Sample voor een realistisch Order / OrderItem / Address-voorbeeld.
Laat const, let en import-statements staan. Je hoeft ze niet weg te slopen — de parser weet dat hij de omringende syntax moet negeren en de echte waarden moet lezen.
Druk op Convert
Klik op de groene Convert-knop. De tool leest het JS, bewaart elke class, array en geneste object, en schrijft de XML in één keer weg. Terwijl hij bezig is zie je een korte loading-indicator.
Kopieer de XML
Het rechter paneel vult zich met ingesprongen, well-formed XML die elke standaard-conforme XML-parser accepteert. Kopieer hem direct in je SOAP-request, RSS-template of test fixture.
Wanneer het echt handig is
SOAP request bodies bouwen
Je hebt een plain JS-object dat een SOAP-request spiegelt en je hebt de XML body nodig om in SoapUI, Postman of een <code>fetch</code>-call te plakken. Object plakken, XML kopiëren, door.
RSS- en Atom-feeds genereren
Zet een feed-object met title, link en items om in een well-formed <a href="https://www.w3.org/TR/xml/" target="_blank" rel="noopener">XML</a>-skelet dat je in de juiste RSS-envelope kunt wrappen — zonder elementen met de hand te bouwen.
sitemap.xml-bestanden beginnen
Plak een array van URL-objects en krijg de steigerbouw voor een <code><urlset></code>-sitemap. Zet er de juiste namespace in en je bent klaar.
Integration-tests seeden
Zet de fixture-objecten uit je Jest- of Vitest-setup om in XML seed-data voor legacy systemen, mock servers of een consumer die nog XML spreekt.
Veelgestelde vragen
Werkt het met plain objects, ES6 classes en arrays?
Ja, alle drie. Een plain object literal wordt direct geserialiseerd met de keys als elementnamen. Een ES6 class plus een new instance gebruikt de class-naam als root-element. Arrays worden container-elementen met één child per item, genoemd naar de element-class (als de items class-instances zijn) of naar de key in enkelvoud.
Hoe gaat het om met Date, BigInt en null?
Date-objecten komen er als ISO-8601-strings uit. BigInt wordt als decimale string uitgespuugd (de n-suffix gaat eraf). null- en undefined-properties worden lege elementen (<field/>) in plaats van stil overgeslagen — zo blijft een downstream XSD dat dat element verwacht nog steeds valideren.
En methods, getters en private fields?
Methods en getters op een class worden overgeslagen — alleen data-properties die echt op de instance zijn toegewezen, worden geserialiseerd. Private fields met #, Symbol-keyed properties en properties op het prototype (niet op de instance) worden ook overgeslagen. Hetzelfde als JSON.stringify zou doen.
Mag ik alleen een object literal plakken, zonder class?
Ja. Een rauwe const data = { ... } werkt prima — de naam van de buitenste variabele wordt het root-element, of een generieke <root> als er geen binding is. Geneste objects en arrays binnenin worden op dezelfde manier geneste elementen.
Escape't het speciale karakters als &, < en >?
Ja. Tekstinhoud met &, <, >, " of ' wordt ge-escape't naar de corresponderende XML-entities, zodat de output altijd netjes terug parset. Unicode-karakters blijven staan en de output is UTF-8.
Wordt mijn code bewaard?
Je code gaat naar de backend om te converteren en wordt niet opgeslagen — we loggen de payload niet. Zoals altijd bij online tools: als de code echt gevoelig is, lees 'm even door voor je plakt.
Andere tools die je wellicht nodig hebt
JavaScript naar XML is maar één puzzelstukje. Deze tools passen er goed bij: