Klistra in Kotlin till vänster och klicka på "Konvertera" — vi gör om det till XMLKlistra in Kotlin-kod

Vad verktyget gör

Om du någonsin har fått skriva en XML-payload för hand för en Kotlin-data class — för en Android-resursfil, en SOAP-endpoint som fortfarande inte är utbytt, eller en fixture för ett integrationstest — vet du hur enerverande det är att skriva. Klistra in Kotlin här så får du tillbaka välformad XML i ett svep. En enskild data class, en fil med flera data classes och sealed classes, eller en ifylld val order = Order(...)-instans — samma resultat: ett komplett XML-dokument med varje property bevarad.

Det är ingen korkad sträng-ersättning. Konverteraren vet hur Kotlin faktiskt serialiserar till XML — ungefär som kotlinx.serialization hanterar det. BigDecimal-värden kommer ut som vanlig numerisk text, Instant och LocalDateTime blir ISO-8601-strängar, nullable med null-värden blir tomma element, och List<T> och Map<K,V> följer en konsekvent containerform — varje lista blir ett wrapper-element med ett barn per objekt, namngivet efter elementtypen.

Serialiseringsannotationer respekteras också. @SerialName("x") på en property döper om elementet i utdatan, @Transient droppar propertyn, och en @SerialName("x") på klassnivå döper om det omslutande rot-elementet. Sealed class-hierarkier plattas ut med en typdiskriminator så att du kan round-trippa dem senare. Klistrar du in flera data classes landar var och en i utdatan med nästlade typer expanderade och standardvärden ifyllda. Kotlin serialization-dokumentationen är värd att läsa om du vill ha den djupa versionen.

Så använder du det

Tre steg. Fungerar likadant om du klistrar in fem rader eller en hel modellfil.

1

Klistra in din Kotlin (eller testa exemplet)

Släng in din Kotlin i vänstra editorn som den är. En data class, en sealed class-hierarki, en ifylld val-instans, eller en fil med flera klasser — allt funkar. Klicka på Ladda exempel om du vill se ett realistiskt fall först.

Du behöver inte skala bort import-satser, ta bort annotationer eller städa upp Kotlin-syntaxen. Lämna koden som den ser ut i din IDE. Bara klistra in.

2

Tryck på Konvertera

Klicka på den gröna Konvertera-knappen. Verktyget läser Kotlin, behåller varje klass och property, och bygger XML i ett svep. Du ser en kort laddningsindikator under tiden.

3

Kopiera XML-en

Högra panelen fylls med indenterad, välformad XML som en standardkompatibel XML-parser accepterar. Kopiera den rakt in i din Android-resurs, SOAP-request, configfil eller test-fixture.

När det faktiskt är användbart

XML för Android-layouter och -resurser

Du har en Kotlin-modell som mappar mot en <a href="https://developer.android.com/guide/topics/resources/providing-resources" target="_blank" rel="noopener">Android-XML-resurs</a> — en preferences-skärm, en string-array, en custom attribute-uppsättning. Klistra in klassen, ta ut XML-en, klistra in i res/xml eller res/values.

SOAP-klienter på JVM

En Kotlin-request-typ måste lämna appen som SOAP. Klistra in data class, släng XML-body i SoapUI eller Postman, verifiera kontraktet utan att skriva enveloppen för hand.

Seed för testfixtures

Förvandla en ifylld <code>val order = Order(...)</code>-instans från ditt enhetstest till en XML-seedfil för integrationstester, mockservrar eller legacy-system som fortfarande pratar XML.

Hålla dokumentation i synk

Generera XML-exempel för ett README, en API-referens eller XSD-baserade schemadokument direkt från dina faktiska Kotlin-modeller, så att dokumentationen matchar koden istället för att glida iväg.

Vanliga frågor

Kan jag klistra in flera data classes på en gång?

Ja — klistra in en hel fil. Varje top-level data class eller sealed class kommer igenom med nästlade typer expanderade och standardvärden ifyllda. Inget droppas i tysthet.

Respekteras @SerialName och @Transient?

Ja. @SerialName("x") på en property döper om elementet i utdatan, @SerialName("x") på en klass döper om det omslutande rot-elementet, och @Transient tar bort propertyn helt. Det är beteendet du får från kotlinx.serialization.

Hur hanterar den BigDecimal, Instant och nullables?

BigDecimal kommer ut som vanlig numerisk text (ingen BigDecimal("...")-wrapper). Instant och LocalDateTime blir ISO-8601-strängar. Nullables med null-värde blir tomma element istället för att tas bort, så att formen hålls konsekvent för konsumenter som validerar mot en XSD.

Hur är det med sealed classes, listor och maps?

Sealed class-hierarkier plattas ut med ett typdiskriminator-attribut så att du kan round-trippa dem. List<T> blir ett containerelement med ett barn per objekt, namngivet efter elementtypen — en List<OrderItem> items blir <items><OrderItem/><OrderItem/></items>. Map<K,V> blir en container av <Entry><Key/><Value/></Entry>.

Sparas min kod?

Din kod skickas till backenden för konverteringen och sparas inte — vi loggar inte payloaden. Som alltid med onlineverktyg, om koden är riktigt känslig, kika igenom den innan du klistrar in.

Tänk om Kotlin har något ovanligt — companion objects, extension functions, coroutines?

Companion objects ignoreras för XML-utdatan eftersom de inte är del av instansens tillstånd. Extension functions och top-level-funktioner hoppas över. Om koden själv har syntaxfel, fixa de uppenbara först — parsern är tolerant men inte tankeläsare.

Andra verktyg du kanske behöver

Kotlin till XML är en pusselbit. De här passar bra ihop med det: