Convertitore JavaScript in XML
Incolla un oggetto, classe o istanza JavaScript. Ti restituiamo XML pulito.
Cosa fa questo tool
Se ti è mai capitato di dover cucire a mano un payload XML che rispecchi un oggetto JavaScript — per un servizio SOAP, un feed RSS, una sitemap o una fixture di test —, conosci il dolore. XMLSerializer vuole un DOM, DOMParser va nel senso opposto, e montare gli elementi a mano significa che le prime tre volte ti dimentichi un figlio. Incolla qui il JS e ricevi XML ben formato in un colpo solo. Funziona con oggetti semplici, una classe ES6 più un'istanza new, o qualsiasi cosa profondamente annidata.
Sa come i valori JS mappano davvero in XML. Numeri e booleani vengono fuori come la loro forma stringa. Gli oggetti Date escono in ISO-8601. BigInt è emesso come stringa decimale (senza il suffisso n). I campi null e undefined diventano elementi vuoti invece di sparire, così la forma dell'output resta stabile. Gli array diventano elementi contenitore con un figlio per item, chiamati come la chiave padre al singolare — un array items in Order diventa <items><item>...</item></items>, a meno che l'array non contenga istanze di classi tipizzate: in quel caso si usa il nome della classe.
Le definizioni di classe sono gestite anche loro. Un class Order { constructor(...) { this.x = ...; } } più const order = new Order(...) ti dà una radice <Order> con tutte le proprietà assegnate nel costruttore. Le istanze di classi annidate si espandono come elementi annidati. Metodi, getter, proprietà con chiave Symbol e quelle che iniziano con # (campi privati) vengono saltati. Se incolli solo un object literal, viene serializzato direttamente con un nome di elemento radice sensato.
Come si usa
Tre passi. Funziona uguale che tu incolli un literal corto o un modulo intero.
Incolla il tuo JavaScript (o prova l'esempio)
Butta il JS nell'editor a sinistra così com'è. Un object literal semplice, una classe ES6 + istanza, il return di una factory function, o un export di un modulo Node.js — va bene tutto. Clicca Load Sample per vedere un esempio realistico con Order / OrderItem / Address.
Lascia const, let e le import dove sono. Non serve toglierle — il parser sa ignorare la sintassi di contorno e leggere i valori veri.
Premi Convert
Clicca il bottone verde Convert. Il tool legge il JS, conserva ogni classe, array e oggetto annidato, e sputa l'XML in un'unica passata. Mentre gira vedi un piccolo indicatore di caricamento.
Copia l'XML
Il pannello di destra si riempie di XML indentato e ben formato che qualsiasi parser XML conforme allo standard accetta. Copialo direttamente nella tua richiesta SOAP, template RSS o fixture di test.
Quando serve davvero
Costruire body di richiesta SOAP
Hai un oggetto JS che rispecchia una richiesta SOAP e ti serve il body XML da buttare in SoapUI, Postman o una chiamata <code>fetch</code>. Incolli l'oggetto, copi l'XML, vai avanti.
Generare feed RSS e Atom
Trasforma un oggetto feed con title, link e items in uno scheletro <a href="https://www.w3.org/TR/xml/" target="_blank" rel="noopener">XML</a> ben formato che puoi avvolgere nell'envelope RSS giusto — senza costruire gli elementi a mano.
Avviare file sitemap.xml
Incolla un array di oggetti URL e prendi l'impalcatura che ti serve per una sitemap <code><urlset></code>. Scambi il namespace giusto e sei a posto.
Seed di test di integrazione
Converti gli oggetti fixture del setup di Jest o Vitest in dati XML di seed per sistemi legacy, mock server, o qualunque consumer che parli ancora XML.
Domande frequenti
Funziona con oggetti semplici, classi ES6 e array?
Sì, tutti e tre. Un object literal semplice viene serializzato direttamente con le sue chiavi come nomi di elemento. Una classe ES6 più un'istanza new usa il nome della classe come elemento radice. Gli array diventano elementi contenitore con un figlio per item, chiamati come la classe dell'elemento (se gli item sono istanze) oppure come la chiave al singolare.
Come gestisce Date, BigInt e null?
Gli oggetti Date escono come stringhe ISO-8601. BigInt è emesso come la sua stringa decimale (il suffisso n cade). Le proprietà null e undefined diventano elementi vuoti (<field/>) invece di sparire silenziosamente, così un XSD a valle che si aspetta quell'elemento valida lo stesso.
E metodi, getter e campi privati?
Metodi e getter di una classe vengono saltati — vengono serializzate solo le proprietà dati effettivamente assegnate sull'istanza. Anche i campi privati dichiarati con #, le proprietà con chiave Symbol e le proprietà sul prototype (non sull'istanza) sono saltati. È lo stesso comportamento di JSON.stringify.
Posso incollare solo un object literal, senza classe?
Sì. Un semplice const data = { ... } funziona senza problemi — il nome della variabile esterna viene usato come elemento radice, o un <root> generico se non c'è binding. Oggetti e array annidati all'interno si espandono come elementi annidati nello stesso modo.
Fa l'escape dei caratteri speciali tipo &, < e >?
Sì. Il testo che contiene &, <, >, " o ' viene escaped nelle rispettive entità XML, così l'output si riparsifica sempre pulito. I caratteri Unicode restano così come sono e l'output è UTF-8.
Il mio codice viene salvato?
Il tuo codice viene mandato al backend per la conversione e non è persistito — non logghiamo il payload. Come sempre con i tool online, se il codice è davvero sensibile, dagli un'occhiata prima di incollarlo.
Altri tool che potrebbero servirti
JavaScript in XML è solo un pezzo del puzzle. Questi tool ci stanno bene insieme: