Convertitore Kotlin in XML
Incolla data class Kotlin o un'istanza. Ricevi XML pulito.
Cosa fa questo strumento
Se ti è mai capitato di dover scrivere a mano un payload XML per una data class Kotlin — per un file di risorse Android, un endpoint SOAP che non hanno ancora sostituito, o una fixture per un test di integrazione — sai quanto è pesante da scrivere. Incolla qui il Kotlin e ricevi XML ben formato in una passata. Una singola data class, un file con più data class e sealed class, o un'istanza popolata val order = Order(...) — stesso risultato: un documento XML completo con ogni proprietà conservata.
Non è una sostituzione stupida di stringhe. Il convertitore sa come Kotlin serializza davvero verso l'XML — più o meno nel modo in cui kotlinx.serialization gestisce le cose. I valori BigDecimal escono come testo numerico semplice, Instant e LocalDateTime diventano stringhe ISO-8601, i nullable con valore null diventano elementi vuoti, e List<T> e Map<K,V> seguono una forma a container coerente — ogni lista diventa un elemento wrapper con un figlio per item, chiamato come il tipo dell'elemento.
Anche le annotazioni di serializzazione vengono rispettate. @SerialName("x") su una proprietà rinomina l'elemento in output, @Transient toglie la proprietà, e un @SerialName("x") a livello di classe rinomina l'elemento radice di wrapping. Le gerarchie sealed class vengono appiattite con un discriminatore di tipo così puoi fare round-trip dopo. Se incolli più data class, ognuna compare nell'output con i tipi annidati espansi e i valori di default compilati. La documentazione ufficiale della serializzazione Kotlin vale la lettura se vuoi la versione approfondita.
Come usarlo
Tre passi. Funziona uguale che tu incolli cinque righe o un intero file di modelli.
Incolla il tuo Kotlin (o prova l'esempio)
Lancia il tuo Kotlin nell'editor di sinistra così com'è. Una data class, una gerarchia sealed class, una val istanza popolata, o un file con più classi — va bene tutto. Clicca su Carica esempio se vuoi vedere prima un caso realistico.
Non devi togliere gli import, rimuovere annotazioni, o ripulire la sintassi Kotlin. Lascia il codice così come appare nel tuo IDE. Incolla e basta.
Premi Converti
Clicca sul pulsante verde Converti. Lo strumento legge il Kotlin, conserva ogni classe e proprietà, e costruisce l'XML in una passata. Vedrai un breve indicatore di caricamento mentre lavora.
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 risorsa Android, richiesta SOAP, file di config o fixture di test.
Quando torna davvero utile
XML di layout e risorse Android
Hai un modello Kotlin che mappa su una <a href="https://developer.android.com/guide/topics/resources/providing-resources" target="_blank" rel="noopener">risorsa XML Android</a> — una schermata di preferenze, un string-array, un set di attributi custom. Incolla la classe, prendi l'XML, incollalo in res/xml o res/values.
Client SOAP sulla JVM
Un tipo di richiesta Kotlin deve uscire dall'app come SOAP. Incolla la data class, butta il body XML in SoapUI o Postman, verifica il contratto senza scrivere l'envelope a mano.
Seed di fixture di test
Trasforma un'istanza popolata <code>val order = Order(...)</code> del tuo unit test in un file XML di seed per test di integrazione, mock server o sistemi legacy che parlano ancora XML.
Tenere le docs allineate
Genera esempi XML per un README, un'API reference o docs di schema basati su XSD direttamente dai tuoi veri modelli Kotlin, così la documentazione combacia con il codice invece di andare a deriva.
Domande frequenti
Posso incollare più data class insieme?
Sì — incolla un intero file. Ogni data class o sealed class di primo livello passa con i tipi annidati espansi e i valori di default compilati. Niente viene scartato in silenzio.
Rispetta @SerialName e @Transient?
Sì. @SerialName("x") su una proprietà rinomina l'elemento in output, @SerialName("x") su una classe rinomina l'elemento radice wrapper, e @Transient toglie la proprietà del tutto. È il comportamento che ti dà kotlinx.serialization.
Come gestisce BigDecimal, Instant e nullable?
BigDecimal esce come testo numerico semplice (senza wrapper BigDecimal("...")). Instant e LocalDateTime diventano stringhe ISO-8601. I nullable con valore null diventano elementi vuoti invece di essere rimossi, così la forma resta coerente per chi valida contro un XSD.
E per sealed class, liste e map?
Le gerarchie sealed class vengono appiattite con un attributo discriminatore di tipo così puoi fare round-trip. List<T> diventa un elemento container con un figlio per item, chiamato come il tipo dell'elemento — una List<OrderItem> items diventa <items><OrderItem/><OrderItem/></items>. Map<K,V> diventa un container di <Entry><Key/><Value/></Entry>.
Il mio codice viene salvato?
Il codice viene inviato al backend per la conversione e non viene persistito — non logghiamo il payload. Come sempre con gli strumenti online, se il codice è davvero sensibile, dagli un'occhiata prima di incollarlo.
E se il Kotlin ha qualcosa di insolito — companion object, extension function, coroutine?
I companion object vengono ignorati per l'output XML visto che non fanno parte dello stato dell'istanza. Le extension function e le funzioni top-level vengono saltate. Se il codice stesso ha errori di sintassi, aggiusta prima quelli ovvi — il parser è tollerante ma non fa telepatia.
Altri strumenti che possono servirti
Kotlin in XML è solo un pezzo del puzzle. Questi si abbinano bene: