Klistra in JavaScript till vänster och klicka på "Convert" — vi gör om det till XMLKlistra in JavaScript-kod

Vad det här verktyget gör

Har du någonsin fått snickra ihop ett XML-payload för hand som matchar ett JavaScript-objekt — för en SOAP-tjänst, ett RSS-flöde, en sitemap eller en test-fixture — så känner du smärtan. XMLSerializer kräver en DOM, DOMParser går åt andra hållet, och att bygga element för hand betyder att du glömmer ett child de tre första gångerna. Klistra in JS:en här istället och få tillbaka well-formed XML i en enda sväng. Funkar för ett vanligt objekt, en ES6 class plus en new-instance, eller något djupt nästlat.

Den förstår hur JS-värden faktiskt mappar till XML. Nummer och booleaner blir sin string-form. Date-objekt kommer ut som ISO-8601. BigInt emitteras som sin decimala string (utan n-suffixet). null- och undefined-fält blir tomma element istället för att slängas, så output-formen förblir stabil. Arrays blir container-element med ett child per item, namngivna efter förälder-keyen i singular — en items-array i Order blir <items><item>...</item></items>, om inte arrayen innehåller typade class-instances — då används class-namnet.

Class-definitioner hanteras också. En class Order { constructor(...) { this.x = ...; } } plus const order = new Order(...) ger dig en <Order>-root med varje property som tilldelades i constructorn. Nästlade class-instances expanderar till nästlade element. Metoder, getters, Symbol-keyed properties och properties som börjar med # (private fields) skippas. Om du bara klistrar in ett rent object literal, serialiseras det direkt med ett rimligt root-element-namn.

Så använder du det

Tre steg. Funkar likadant oavsett om du klistrar in ett kort literal eller en hel modul.

1

Klistra in din JavaScript (eller testa samplet)

Släpp in JS:en i vänster editor precis som den är. Ett rent object literal, en ES6 class + instance, en return från en factory function, eller en Node.js-modul-export — allt funkar. Klicka på Load Sample för att se ett realistiskt Order / OrderItem / Address-exempel.

Lämna kvar const, let och import-statements. Du behöver inte skala bort dem — parsern vet att den ska ignorera omslutande syntax och läsa de faktiska värdena.

2

Tryck Convert

Klicka på den gröna Convert-knappen. Verktyget läser JS:en, bevarar varje class, array och nästlat objekt, och spottar ut XML:en i ett svep. En kort laddningsindikator visas medan det körs.

3

Kopiera XML:en

Högra panelen fylls med indenterad, well-formed XML som varje standardkompatibel XML-parser accepterar. Kopiera in det direkt i din SOAP-request, RSS-template eller test-fixture.

När det faktiskt räddar dagen

Bygga SOAP-request bodies

Du har ett rent JS-objekt som speglar en SOAP-request och behöver XML-bodyn att släppa in i SoapUI, Postman eller en <code>fetch</code>-call. Klistra in objektet, kopiera XML:en, vidare.

Generera RSS- och Atom-flöden

Förvandla ett feed-objekt med title, link och items till ett well-formed <a href="https://www.w3.org/TR/xml/" target="_blank" rel="noopener">XML</a>-skelett som du kan wrappa i rätt RSS-envelope — utan att bygga element för hand.

Dra igång sitemap.xml-filer

Klistra in en array med URL-objekt och få stommen du behöver för en <code>&lt;urlset&gt;</code>-sitemap. Byt till rätt namespace och du är klar.

Seeda integrationstester

Konvertera fixture-objekten från din Jest- eller Vitest-setup till XML-seed-data för legacy-system, mock-servers, eller vilken consumer som än pratar XML.

Vanliga frågor

Funkar det med rena objekt, ES6 classes och arrays?

Ja, alla tre. Ett rent object literal serialiseras direkt med sina keys som element-namn. En ES6 class plus en new-instance använder class-namnet som root-element. Arrays blir container-element med ett child per item, namngivna antingen efter element-classen (om items är class-instances) eller efter keyen i singular.

Hur hanterar det Date, BigInt och null?

Date-objekt kommer ut som ISO-8601-strings. BigInt emitteras som sin decimala string (n-suffixet ryker). null- och undefined-properties blir tomma element (<field/>) istället för att tyst skippas — så ett downstream XSD som förväntar sig elementet validerar ändå.

Vad händer med metoder, getters och private fields?

Metoder och getters på en class skippas — bara data-properties som faktiskt blev tilldelade på instancen serialiseras. Private fields deklarerade med #, Symbol-keyed properties och properties på prototypen (inte instancen) skippas också. Samma beteende som JSON.stringify.

Kan jag klistra in bara ett object literal, utan class?

Ja. Ett rått const data = { ... } funkar utan problem — det yttre variabelnamnet används som root-element, eller ett generiskt <root> om det inte finns någon binding. Nästlade objekt och arrays inuti expanderar till nästlade element på samma sätt.

Escapas specialtecken som &amp;, &lt; och &gt;?

Ja. Textinnehåll med &, <, >, " eller ' escapas till motsvarande XML-entities, så outputen parsar alltid tillbaka rent. Unicode-tecken lämnas som de är och outputen är UTF-8.

Sparas min kod någonstans?

Din kod skickas till backend för att konverteras och persistas inte — vi loggar inte payloadet. Som alltid med online-verktyg: är koden verkligen känslig, läs igenom den innan du klistrar.

Andra verktyg du kan behöva

JavaScript till XML är bara en pusselbit. Här är verktygen som spelar bra ihop med det: