Incolla Scala a sinistra e clicca "Converti" — lo trasformiamo in XMLIncolla codice Scala

Cosa fa questo strumento

Se hai mai avuto bisogno di un payload XML che combaciasse con una case class Scala — per una fixture Akka HTTP, una config Play Framework, un'integrazione SOAP legacy o un test — probabilmente hai scritto a mano più XML di quanto volessi. Incolla lo Scala qui e ottieni subito XML ben formato. Una singola case class, un val popolato, o un intero file con tipi annidati — tutto passa con ogni campo preservato.

Il convertitore capisce davvero come Scala appare quando diventa XML. I letterali BigDecimal con suffisso finale escono come testo numerico puro, i campi Option[String] che contengono None vengono mappati su elementi vuoti invece di essere scartati in silenzio, List[T] e Seq[T] diventano elementi contenitore con un figlio per item (chiamato come il tipo dell'elemento), e Map[K,V] diventa coppie <Entry><Key/><Value/></Entry>. Corrisponde a ciò che scala-xml o jackson-module-scala emetterebbero in un round-trip di un modello.

Le case class annidate si espandono in elementi annidati, le costanti del companion object vengono ignorate, e le gerarchie di sealed trait mantengono il nome del sottotipo concreto come tag dell'elemento. Puoi incollare più classi alla volta — il convertitore preserva le relazioni, quindi se il tuo Order contiene un List[OrderItem] e uno ShippingAddress, tornano tutti e tre insieme. Dai un'occhiata al tour ufficiale delle case class per rinfrescare cosa viene trattato come dato e cosa come comportamento.

Come si usa

Tre passi. Stesso flusso sia che incolli una case class di cinque righe sia un file di modello intero.

1

Incolla il tuo Scala (o carica l'esempio)

Butta il codice nell'editor a sinistra così com'è. Una singola case class, un'istanza val popolata, più classi o gerarchie di sealed trait — il parser va d'accordo con tutte. Premi Carica esempio se vuoi prima vedere un caso realistico.

Non serve togliere gli import, rimuovere la dichiarazione package o sistemare la sintassi Scala. Lascia il codice come appare in IntelliJ o Metals. Incolla e basta.

2

Clicca Converti

Clicca il bottone verde Converti. Lo strumento fa il parsing delle case class, percorre l'istanza popolata e costruisce l'XML in un'unica passata. Mentre lavora compare un breve indicatore di caricamento.

3

Copia l'XML

Il pannello di destra si riempie di XML indentato e ben formato che qualsiasi parser conforme allo standard accetta. Copialo direttamente nel tuo test Akka HTTP, body XML di Play, file di risorse SBT, o dove ti serve.

Quando torna davvero utile

Fixture Akka HTTP e Play

Hai una case class per una richiesta XML in arrivo in Akka HTTP o Play e ti serve un body realistico per un test o un comando curl. Incolli la classe, prendi l'XML, lo infili nella spec.

Config XML per sistemi legacy

Una case class di config da 30 campi diventa un template XML pronto da modificare per piattaforme più datate che vogliono ancora XML — Mule, WebLogic, IBM MQ o tool interni.

Documentazione allineata al codice

Genera esempi XML per un README, ScalaDoc o pagina Confluence direttamente dalle tue vere case class, così la doc non si scolla mai dal modello.

Dati di test per SOAP e scala-xml

Trasforma istanze popolate dai tuoi test unitari in file XML seed per test di integrazione, stub WireMock o sistemi che parlano ancora SOAP.

Domande frequenti

Posso incollare più case class alla volta?

Sì — incolla un intero file. Ogni case class di top-level esce con i tipi annidati espansi e gli helper del companion object ignorati. Se il tuo Order contiene un List[OrderItem], entrambi appaiono nell'output con l'annidamento corretto.

Come gestisce Option, None e i valori di default?

Un Option[String] che contiene Some("x") diventa un elemento normale con il testo dentro. None diventa un elemento vuoto, così la forma dell'XML resta coerente — niente viene scartato in silenzio. I valori di default dei campi di una case class vengono usati quando un campo manca nell'istanza.

E BigDecimal, Instant, UUID e i tipi numerici strambi?

BigDecimal perde il suffisso ed esce come testo numerico puro. java.time.Instant, LocalDate e LocalDateTime diventano stringhe ISO-8601. UUID mantiene il formato esadecimale standard 8-4-4-4-12. I wrapper primitivi (Int, Long, Double, Boolean) diventano testo puro — la stessa forma che jackson-module-scala emette di default.

List, Seq, Set e Map funzionano tutti allo stesso modo?

Quasi. List[T], Seq[T], Vector[T] e Set[T] diventano tutti elementi contenitore con un figlio per item chiamato come il tipo dell'elemento — quindi Items: List[OrderItem] diventa <Items><OrderItem/><OrderItem/></Items>. Map[K,V] diventa un contenitore di <Entry><Key/><Value/></Entry>.

Il mio codice viene memorizzato?

Il tuo codice viene inviato al backend per la conversione e non viene persistito — non logghiamo il payload. Se lo Scala è davvero sensibile, dagli un'occhiata veloce prima di incollarlo, come con qualsiasi tool online.

E se lo Scala ha conversioni implicite, type class o macro?

Implicit e codice generato da macro non producono campi XML da soli — lavoriamo a partire dai membri dichiarati della case class. Quindi un implicit val format o un'annotazione @JsonCodec viene di fatto ignorato e passa la forma grezza del campo. Se il codice ha errori di sintassi, sistema prima quelli ovvi.

Altri strumenti che potrebbero servirti

Scala in XML è solo un pezzo del puzzle. Questi strumenti si combinano bene: