Cole Scala à esquerda e clique em "Converter" — transformamos em XMLCole código Scala

O que esta ferramenta faz

Se você já precisou de um payload XML que batesse com uma case class de Scala — para uma fixture do Akka HTTP, uma config do Play Framework, uma integração SOAP legada ou um teste — provavelmente escreveu XML à mão mais vezes do que gostaria. Cole o Scala aqui e receba XML bem-formado na hora. Uma única case class, um val preenchido ou um arquivo inteiro com tipos aninhados — tudo passa com cada campo preservado.

O conversor entende como Scala realmente se parece quando vira XML. Literais BigDecimal com sufixo no final saem como texto numérico puro, campos Option[String] viram elementos vazios quando têm None em vez de serem descartados silenciosamente, List[T] e Seq[T] viram elementos contêineres com um filho por item (nomeado pelo tipo do elemento), e Map[K,V] vira pares <Entry><Key/><Value/></Entry>. Isso bate com o que o scala-xml ou o jackson-module-scala emitiriam num round-trip do modelo.

Case classes aninhadas se expandem em elementos aninhados, constantes de companion object são ignoradas, e hierarquias de sealed trait mantêm o nome do subtipo concreto como tag do elemento. Você pode colar várias classes de uma vez — o conversor preserva os relacionamentos, então se seu Order contém um List[OrderItem] e um ShippingAddress, os três voltam juntos. Dá uma olhada no tour oficial de case classes para relembrar o que é tratado como dado e o que é comportamento.

Como usar

Três passos. Mesmo fluxo, seja colando uma case class de cinco linhas ou um arquivo de modelo inteiro.

1

Cole seu Scala (ou carregue o exemplo)

Jogue o código no editor da esquerda do jeito que está. Uma única case class, uma instância val preenchida, várias classes ou hierarquias de sealed trait — o parser aceita tudo. Clique em Carregar exemplo se quiser ver um caso realista primeiro.

Não precisa tirar os imports, remover a declaração package ou limpar a sintaxe do Scala. Deixa o código do jeito que aparece no IntelliJ ou Metals. Só cole.

2

Clique em Converter

Clique no botão verde Converter. A ferramenta parseia as case classes, percorre a instância preenchida e monta o XML em uma única passada. Um indicador de carregamento curto aparece enquanto ela trabalha.

3

Copie o XML

O painel da direita se preenche com XML indentado e bem-formado, que qualquer parser compatível com o padrão aceita. Copie direto para seu teste Akka HTTP, body XML do Play, arquivo de recursos SBT, ou para onde precisar.

Quando isso realmente ajuda

Fixtures de Akka HTTP e Play

Você tem uma case class para uma requisição XML de entrada no Akka HTTP ou Play e precisa de um body realista para um teste ou um comando curl. Cole a classe, pegue o XML e jogue na sua spec.

Config XML para sistemas legados

Uma case class de configuração com 30 campos vira um template XML pronto para editar para plataformas mais antigas que ainda querem XML — Mule, WebLogic, IBM MQ ou ferramentas internas.

Documentação alinhada com o código

Gere exemplos XML para um README, ScalaDoc ou página do Confluence direto das suas case classes reais, para que a documentação nunca fique desalinhada com o modelo.

Dados de teste para SOAP e scala-xml

Transforme instâncias preenchidas dos seus testes unitários em arquivos XML seed para testes de integração, stubs do WireMock ou sistemas que ainda falam SOAP.

Perguntas comuns

Posso colar várias case classes de uma vez?

Sim — cole um arquivo inteiro. Cada case class de topo sai com os tipos aninhados expandidos e os helpers de companion object ignorados. Se seu Order contém um List[OrderItem], os dois aparecem na saída com o aninhamento certo.

Como Option, None e valores default são tratados?

Um Option[String] com Some("x") vira um elemento normal com o texto dentro. None vira um elemento vazio para que o formato do XML fique consistente — nada some silenciosamente. Os valores default dos campos de uma case class são usados quando um campo está ausente na instância.

E BigDecimal, Instant, UUID e os tipos numéricos esquisitos?

BigDecimal perde o sufixo e sai como texto numérico puro. java.time.Instant, LocalDate e LocalDateTime viram strings ISO-8601. UUID mantém o formato hexadecimal padrão 8-4-4-4-12. Wrappers primitivos (Int, Long, Double, Boolean) viram texto puro — o mesmo formato que o jackson-module-scala emite por padrão.

List, Seq, Set e Map funcionam todos do mesmo jeito?

Quase. List[T], Seq[T], Vector[T] e Set[T] viram elementos contêineres com um filho por item nomeado pelo tipo do elemento — então Items: List[OrderItem] vira <Items><OrderItem/><OrderItem/></Items>. Map[K,V] vira um contêiner de <Entry><Key/><Value/></Entry>.

Meu código é armazenado?

Seu código é enviado para o backend para conversão e não é persistido — não logamos o payload. Se o Scala for realmente sensível, dá uma olhada rápida antes de colar, igual a qualquer ferramenta online.

E se o Scala tiver conversões implícitas, type classes ou macros?

Implicits e código gerado por macros não produzem campos XML por conta própria — trabalhamos com base nos membros declarados da case class. Então um implicit val format ou uma anotação @JsonCodec é efetivamente ignorado e o formato cru do campo passa. Se o código tem erros de sintaxe, corrija os óbvios primeiro.

Outras ferramentas que podem ser úteis

Scala para XML é só uma peça do quebra-cabeça. Estas ferramentas combinam bem: