Plak Scala links en klik op "Converteren" — we maken er XML vanPlak Scala-code

Wat deze tool doet

Als je ooit een XML-payload nodig had die past bij een Scala case class — voor een Akka HTTP-fixture, een Play Framework-config, een legacy SOAP-integratie of een test — heb je waarschijnlijk meer XML met de hand geschreven dan je lief was. Plak de Scala hier en krijg direct goed gevormde XML terug. Eén enkele case class, een ingevuld val, of een heel bestand met geneste types — alles komt erdoorheen met elk veld bewaard.

De converter snapt hoe Scala er écht uitziet als het op XML aankomt. BigDecimal-literalen met een suffix aan het einde komen eruit als gewone numerieke tekst, Option[String]-velden worden lege elementen wanneer ze None bevatten in plaats van stilletjes te verdwijnen, List[T] en Seq[T] worden containerelementen met één kind per item (genoemd naar het elementtype), en Map[K,V] wordt <Entry><Key/><Value/></Entry>-paren. Dat komt overeen met wat scala-xml of jackson-module-scala zouden emitten bij een round-trip van een model.

Geneste case classes klappen uit naar geneste elementen, companion-object-constanten worden genegeerd, en sealed-trait-hiërarchieën behouden de naam van het concrete subtype als tag van het element. Je kunt meerdere klassen tegelijk plakken — de converter behoudt de relaties, dus als je Order een List[OrderItem] en een ShippingAddress bevat, komen alle drie samen terug. Kijk naar de officiële case class-tour voor een opfrisser over wat als data en wat als gedrag wordt behandeld.

Hoe je het gebruikt

Drie stappen. Zelfde flow of je nu een case class van vijf regels plakt of een heel modelbestand.

1

Plak je Scala (of laad het voorbeeld)

Zet de code as-is in de linker editor. Eén case class, een ingevulde val-instance, meerdere klassen of sealed-trait-hiërarchieën — de parser kan er allemaal mee uit de voeten. Klik op Voorbeeld laden als je eerst een realistisch voorbeeld wilt zien.

Je hoeft geen imports te verwijderen, de package-declaratie eruit te halen of de Scala-syntax op te ruimen. Laat de code zoals hij in IntelliJ of Metals staat. Gewoon plakken.

2

Druk op Converteren

Klik op de groene Converteren-knop. De tool parst de case classes, loopt door de ingevulde instance en bouwt de XML in één pass. Een korte laadindicator draait ondertussen.

3

Kopieer de XML

Het rechter paneel vult zich met ingesprongen, goed gevormde XML die elke standaard-conforme parser accepteert. Kopieer het direct naar je Akka HTTP-test, Play XML-body, SBT resource-bestand, of waar je het ook nodig hebt.

Wanneer dit echt van pas komt

Akka HTTP- en Play-fixtures

Je hebt een case class voor een binnenkomend XML-verzoek in Akka HTTP of Play en je hebt een realistische body nodig voor een test of een curl-commando. Plak de klasse, krijg de XML, zet 'm in je spec.

XML-config voor legacy-systemen

Een config-case-class met 30 velden wordt een kant-en-klaar bewerkbaar XML-template voor oudere platformen die nog steeds XML willen — Mule, WebLogic, IBM MQ of eigen tooling.

Documentatie die bij de code past

Genereer XML-voorbeelden voor een README, ScalaDoc of Confluence-pagina direct uit je echte case classes, zodat de docs nooit uit de pas lopen met het model.

Testdata voor SOAP en scala-xml

Zet ingevulde instances uit je unit-tests om in XML-seed-bestanden voor integratietests, WireMock-stubs of systemen die nog steeds SOAP spreken.

Veelgestelde vragen

Kan ik meerdere case classes tegelijk plakken?

Ja — plak een heel bestand. Elke top-level case class komt eruit met geneste types uitgeklapt en companion-object-helpers genegeerd. Als je Order een List[OrderItem] bevat, verschijnen ze allebei in de output met de juiste nesting.

Hoe gaat het om met Option, None en default-waarden?

Een Option[String] met Some("x") wordt een normaal element met de tekst erin. None wordt een leeg element zodat de vorm van de XML consistent blijft — er wordt niks stiekem weggegooid. Default-waarden op case-class-velden worden gebruikt wanneer een veld in de instance ontbreekt.

En BigDecimal, Instant, UUID en die rare numerieke types?

BigDecimal laat zijn suffix vallen en komt als gewone numerieke tekst naar buiten. java.time.Instant, LocalDate en LocalDateTime worden ISO-8601-strings. UUID behoudt zijn standaard 8-4-4-4-12-hexformaat. Primitive wrappers (Int, Long, Double, Boolean) worden platte tekst — dezelfde vorm die jackson-module-scala standaard emit.

Werken List, Seq, Set en Map allemaal hetzelfde?

Bijna. List[T], Seq[T], Vector[T] en Set[T] worden allemaal containerelementen met één kind per item, genoemd naar het elementtype — dus Items: List[OrderItem] wordt <Items><OrderItem/><OrderItem/></Items>. Map[K,V] wordt een container van <Entry><Key/><Value/></Entry>.

Wordt mijn code opgeslagen?

Je code wordt naar de backend gestuurd voor conversie en wordt niet bewaard — we loggen de payload niet. Als de Scala echt gevoelig is, bekijk het even snel vóór je plakt, net zoals bij elke online tool.

Wat als de Scala impliciete conversies, type classes of macro's bevat?

Impliciete conversies en macro-gegenereerde code produceren zelf geen XML-velden — we werken vanuit de gedeclareerde case-class-members. Dus een implicit val format of een @JsonCodec-annotatie wordt effectief genegeerd en de ruwe veldvorm komt door. Heeft de code syntaxfouten, los dan eerst de voor de hand liggende op.

Andere tools die je misschien nodig hebt

Scala naar XML is één stukje van de puzzel. Deze tools passen er goed bij: