JavaScript til XML Converter
Indsæt et JavaScript-objekt, en class eller en instance. Få ren XML tilbage.
Hvad værktøjet gør
Hvis du nogensinde har skullet flikke et XML-payload sammen i hånden, der matcher et JavaScript-objekt — til en SOAP-service, et RSS-feed, et sitemap eller en test-fixture — så kender du smerten. XMLSerializer skal bruge et DOM, DOMParser går den anden vej, og at bygge elementer i hånden betyder, at du glemmer et child de første tre gange. Indsæt JS'en her i stedet og få well-formed XML tilbage i ét hug. Virker med et almindeligt objekt, en ES6 class plus en new-instance, eller noget dybt nestet.
Den forstår, hvordan JS-værdier faktisk mapper til XML. Tal og booleans bliver deres string-form. Date-objekter kommer ud som ISO-8601. BigInt udsendes som sin decimale string (uden n-suffikset). null- og undefined-felter bliver tomme elementer i stedet for at blive smidt ud, så formen på outputtet forbliver stabil. Arrays bliver container-elementer med ét child per item, navngivet efter parent-keyen i ental — et items-array i Order bliver <items><item>...</item></items>, medmindre arrayet indeholder typede class-instances — så bruges class-navnet.
Class-definitioner bliver også håndteret. En class Order { constructor(...) { this.x = ...; } } plus const order = new Order(...) giver dig en <Order>-rod med hver property, der blev sat i constructoren. Nestede class-instances folder sig ud som nestede elementer. Metoder, gettere, Symbol-keyed properties og properties, der starter med # (private fields), springes over. Indsætter du bare et plain object literal, bliver det serialiseret direkte med et fornuftigt rod-elementnavn.
Sådan bruger du det
Tre trin. Virker på samme måde, uanset om du indsætter et kort literal eller et helt modul.
Indsæt din JavaScript (eller prøv samplet)
Smid dit JS i venstre editor, som det er. Et plain object literal, en ES6 class + instance, et return fra en factory function, eller et Node.js-modul-export — det hele går an. Klik Load Sample for at se et realistisk Order / OrderItem / Address-eksempel.
Lad const, let og import-statements stå. Du behøver ikke skrælle dem af — parseren ved, at den skal ignorere den omkringliggende syntax og læse de faktiske værdier.
Tryk Convert
Klik på den grønne Convert-knap. Værktøjet læser JS, bevarer hver class, array og nestet objekt, og skriver XML ud i ét hug. En kort loading-indikator vises, mens det kører.
Kopier XML
Højre panel fyldes med indrykket, well-formed XML, som enhver standard-kompatibel XML-parser accepterer. Kopier det direkte ind i din SOAP-request, RSS-template eller test-fixture.
Hvornår det faktisk kommer til nytte
Bygge SOAP-request bodies
Du har et plain JS-objekt, der spejler en SOAP-request, og skal bruge XML-bodyen til at smække ind i SoapUI, Postman eller et <code>fetch</code>-call. Indsæt objektet, kopier XML, videre.
Generere RSS- og Atom-feeds
Lav et feed-objekt med title, link og items om til et well-formed <a href="https://www.w3.org/TR/xml/" target="_blank" rel="noopener">XML</a>-skelet, du kan pakke ind i den rigtige RSS-envelope — uden at bygge elementer i hånden.
Kom i gang med sitemap.xml-filer
Indsæt et array af URL-objekter og få stilladset, du skal bruge til et <code><urlset></code>-sitemap. Byt til det rigtige namespace, og du er færdig.
Seede integrationstests
Konverter fixture-objekterne fra dit Jest- eller Vitest-setup til XML seed-data til legacy-systemer, mock-servers eller en consumer, der stadig taler XML.
Almindelige spørgsmål
Virker det med plain objekter, ES6 classes og arrays?
Ja, alle tre. Et plain object literal serialiseres direkte med sine keys som elementnavne. En ES6 class plus en new-instance bruger class-navnet som rod-element. Arrays bliver container-elementer med ét child per item, navngivet enten efter element-classen (hvis items er class-instances) eller efter keyen i ental.
Hvordan håndterer den Date, BigInt og null?
Date-objekter kommer ud som ISO-8601-strings. BigInt udsendes som sin decimale string (n-suffikset ryger). null- og undefined-properties bliver tomme elementer (<field/>) i stedet for at blive stille sprunget over — så et downstream XSD, der forventer elementet, validerer stadig.
Hvad med metoder, gettere og private fields?
Metoder og gettere på en class springes over — kun data-properties, der faktisk blev sat på instancen, bliver serialiseret. Private fields erklæret med #, Symbol-keyed properties og properties på prototypen (ikke på instancen) springes også over. Samme opførsel som JSON.stringify.
Kan jeg indsætte bare et object literal uden class?
Ja. Et råt const data = { ... } virker uden problemer — det ydre variabelnavn bruges som rod-element, eller et generisk <root>, hvis der ikke er nogen binding. Nestede objekter og arrays indeni folder sig ud som nestede elementer på samme måde.
Escaper den specialtegn som &, < og >?
Ja. Tekstindhold med &, <, >, " eller ' escapes til de tilsvarende XML-entities, så outputtet altid parser rent tilbage. Unicode-tegn efterlades, som de er, og outputtet er UTF-8.
Bliver min kode gemt?
Din kode sendes til backend for at blive konverteret og bliver ikke persistet — vi logger ikke payloadet. Som altid med online-værktøjer: er koden virkelig følsom, så læs den igennem, før du indsætter.
Andre værktøjer du måske får brug for
JavaScript til XML er bare én brik i puslespillet. Her er værktøjerne, der spiller godt sammen med det: