Kotlin naar XML Converter
Plak Kotlin data classes of een instance. Krijg schone XML terug.
Wat deze tool doet
Als je ooit met de hand een XML-payload hebt moeten schrijven voor een Kotlin-data class — voor een Android-resourcebestand, een SOAP-endpoint die nog steeds niet is vervangen, of een fixture voor een integratietest — dan weet je hoe vervelend dat typen is. Plak het Kotlin hier en je krijgt in één keer goed gevormde XML terug. Een losse data class, een bestand met meerdere data classes en sealed classes, of een gevulde val order = Order(...)-instance — zelfde resultaat: een compleet XML-document met elke property behouden.
Het is geen domme string-replacement. De converter weet hoe Kotlin echt serialiseert naar XML — ongeveer zoals kotlinx.serialization dat aanpakt. BigDecimal-waarden komen eruit als platte numerieke tekst, Instant en LocalDateTime worden ISO-8601-strings, nullables met null-waarden worden lege elementen, en List<T> en Map<K,V> volgen een consistente containervorm — elke lijst wordt een wrapper-element met één kind per item, genoemd naar het elementtype.
Serialisatie-annotaties worden ook gerespecteerd. @SerialName("x") op een property hernoemt het element in de output, @Transient laat de property weg, en een @SerialName("x") op klasseniveau hernoemt het omhullende root-element. Sealed class-hiërarchieën worden afgeplat met een type-discriminator zodat je ze later kunt round-trippen. Plak je meerdere data classes, dan landt elke in de output met uitgeklapte geneste types en ingevulde standaardwaarden. De Kotlin serialization-documentatie is het lezen waard als je de diepere versie wilt.
Hoe je het gebruikt
Drie stappen. Werkt hetzelfde of je nu vijf regels plakt of een heel modelbestand.
Plak je Kotlin (of probeer het voorbeeld)
Gooi je Kotlin zo in de linkereditor. Een data class, een sealed class-hiërarchie, een gevulde val-instance, of een bestand met meerdere classes — allemaal prima. Klik op Voorbeeld laden als je eerst een realistisch voorbeeld wilt zien.
Je hoeft geen import-statements te strippen, annotaties weg te halen of de Kotlin-syntax op te ruimen. Laat de code zoals hij in je IDE staat. Gewoon plakken.
Druk op Converteren
Klik op de groene Converteren-knop. De tool leest het Kotlin, behoudt elke class en property, en bouwt de XML in één keer. Je ziet een korte laadindicator terwijl het loopt.
Kopieer de XML
Het rechterpaneel vult zich met ingesprongen, goed gevormde XML die een standaardconforme XML-parser gewoon accepteert. Kopieer het direct naar je Android-resource, SOAP-request, configbestand of test-fixture.
Wanneer dit echt handig is
Android layout- en resource-XML
Je hebt een Kotlin-model dat mapt op een <a href="https://developer.android.com/guide/topics/resources/providing-resources" target="_blank" rel="noopener">Android XML-resource</a> — een preferences-scherm, een string-array, een custom attribute set. Plak de class, haal de XML op, plak in res/xml of res/values.
SOAP-clients op de JVM
Een Kotlin-request type moet de app uit als SOAP. Plak de data class, gooi de XML-body in SoapUI of Postman, verifieer het contract zonder de envelope met de hand te schrijven.
Test-fixtures seeden
Zet een gevulde <code>val order = Order(...)</code>-instance uit je unit test om naar een XML seed-bestand voor integratietests, mock servers of legacy systemen die nog steeds XML spreken.
Docs synchroon houden
Genereer XML-voorbeelden voor een README, een API-reference of XSD-gebaseerde schema-docs rechtstreeks vanuit je echte Kotlin-modellen, zodat de documentatie bij de code past in plaats van ervandaan te drijven.
Veelgestelde vragen
Kan ik meerdere data classes tegelijk plakken?
Ja — plak een heel bestand. Elke top-level data class of sealed class komt door met uitgeklapte geneste types en ingevulde standaardwaarden. Er wordt niks stilletjes weggelaten.
Respecteert het @SerialName en @Transient?
Ja. @SerialName("x") op een property hernoemt het element in de output, @SerialName("x") op een class hernoemt het omhullende root-element, en @Transient laat de property helemaal weg. Dat is het gedrag dat je van kotlinx.serialization krijgt.
Hoe gaat het om met BigDecimal, Instant en nullables?
BigDecimal komt eruit als platte numerieke tekst (geen BigDecimal("...")-wrapper). Instant en LocalDateTime worden ISO-8601-strings. Nullables met een null-waarde worden lege elementen in plaats van weggelaten, zodat de vorm consistent blijft voor consumers die tegen een XSD valideren.
En sealed classes, lijsten en maps?
Sealed class-hiërarchieën worden afgeplat met een type-discriminator-attribuut zodat je kunt round-trippen. List<T> wordt een container-element met één kind per item, genoemd naar het elementtype — een List<OrderItem> items 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 de conversie en wordt niet bewaard — we loggen de payload niet. Zoals altijd met online tools: als de code echt gevoelig is, kijk hem even na voor je plakt.
Wat als het Kotlin iets ongewoons heeft — companion objects, extension functions, coroutines?
Companion objects worden voor de XML-output genegeerd omdat ze geen deel uitmaken van de instance-state. Extension functions en top-level functions worden overgeslagen. Als de code zelf syntaxfouten heeft, fix de overduidelijke dan eerst — de parser is vergevingsgezind maar niet helderziend.
Andere tools die je kunnen helpen
Kotlin naar XML is één puzzelstukje. Deze passen er goed bij: