Füge Kotlin links ein und klicke auf "Konvertieren" — wir machen XML darausKotlin-Code einfügen

Was dieses Tool macht

Wenn du jemals einen XML-Payload für eine Kotlin-Data Class von Hand schreiben musstest — für eine Android-Resource-Datei, einen SOAP-Endpoint, der noch immer nicht ersetzt wurde, oder ein Fixture für einen Integrationstest — dann weißt du, wie nervig das Tippen ist. Füge hier Kotlin ein und du bekommst in einem Durchgang wohlgeformtes XML zurück. Eine einzelne Data Class, eine Datei mit mehreren Data und Sealed Classes, oder eine gefüllte val order = Order(...)-Instanz — gleiches Ergebnis: ein komplettes XML-Dokument mit allen erhaltenen Eigenschaften.

Das ist keine dumme String-Ersetzung. Der Konverter weiß, wie Kotlin tatsächlich zu XML serialisiert — ungefähr so, wie kotlinx.serialization das handhabt. BigDecimal-Werte kommen als reiner numerischer Text raus, Instant und LocalDateTime werden zu ISO-8601-Strings, Nullables mit null-Werten werden leere Elemente, und List<T> und Map<K,V> folgen einer konsistenten Container-Form — jede Liste wird zu einem Wrapper-Element mit einem Kind pro Item, benannt nach dem Elementtyp.

Serialisierungs-Annotationen werden auch berücksichtigt. @SerialName("x") auf einer Property benennt das Element in der Ausgabe um, @Transient lässt die Property weg, und ein @SerialName("x") auf Klassenebene benennt das umhüllende Root-Element um. Sealed-Class-Hierarchien werden mit einem Type-Discriminator flach gemacht, damit du sie später round-trippen kannst. Wenn du mehrere Data Classes einfügst, landet jede in der Ausgabe mit ausgeklappten verschachtelten Typen und gefüllten Default-Werten. Die Kotlin-Serialization-Dokumentation lohnt sich, wenn du die ausführliche Version willst.

So verwendest du es

Drei Schritte. Funktioniert gleich, egal ob du fünf Zeilen oder eine ganze Model-Datei einfügst.

1

Füge dein Kotlin ein (oder probier das Beispiel)

Wirf dein Kotlin so wie es ist in den linken Editor. Eine Data Class, eine Sealed-Class-Hierarchie, eine gefüllte val-Instanz, oder eine Datei mit mehreren Klassen — alles okay. Klick auf Beispiel laden, wenn du zuerst ein realistisches Beispiel sehen willst.

Du musst keine import-Statements rauswerfen, keine Annotationen entfernen, und die Kotlin-Syntax nicht aufräumen. Lass den Code so wie er in deiner IDE aussieht. Einfach einfügen.

2

Drück Konvertieren

Klick auf den grünen Konvertieren-Button. Das Tool liest das Kotlin, behält jede Klasse und Property, und baut das XML in einem Durchgang. Während es läuft, siehst du einen kurzen Lade-Indikator.

3

Kopier das XML

Das rechte Panel füllt sich mit eingerücktem, wohlgeformtem XML, das jeder standardkonforme XML-Parser akzeptiert. Kopier es direkt in deine Android-Resource, SOAP-Anfrage, Config-Datei oder Test-Fixture.

Wann das wirklich nützlich ist

Android Layout- und Resource-XML

Du hast ein Kotlin-Model, das auf eine <a href="https://developer.android.com/guide/topics/resources/providing-resources" target="_blank" rel="noopener">Android XML-Resource</a> abbildet — ein Preferences-Screen, ein String-Array, ein Custom-Attribute-Set. Klasse einfügen, XML rausholen, in res/xml oder res/values einfügen.

SOAP-Clients auf der JVM

Ein Kotlin-Request-Typ muss die App als SOAP verlassen. Data Class einfügen, XML-Body in SoapUI oder Postman reinwerfen, Contract verifizieren ohne den Envelope von Hand zu schreiben.

Test-Fixtures seeden

Verwandle eine gefüllte <code>val order = Order(...)</code>-Instanz aus deinem Unit-Test in eine XML-Seed-Datei für Integrationstests, Mock-Server oder Legacy-Systeme, die immer noch XML sprechen.

Docs synchron halten

Generiere XML-Beispiele für ein README, eine API-Referenz oder XSD-basierte Schema-Docs direkt aus deinen echten Kotlin-Modellen, damit die Dokumentation zum Code passt statt abzudriften.

Häufige Fragen

Kann ich mehrere Data Classes auf einmal einfügen?

Ja — füg eine ganze Datei ein. Jede Top-Level-Data Class oder Sealed Class kommt durch, mit ausgeklappten verschachtelten Typen und gefüllten Default-Werten. Nichts wird still verschluckt.

Berücksichtigt es @SerialName und @Transient?

Ja. @SerialName("x") auf einer Property benennt das Element in der Ausgabe um, @SerialName("x") auf einer Klasse benennt das umhüllende Root-Element um, und @Transient lässt die Property komplett weg. Genau das Verhalten, das du von kotlinx.serialization bekommst.

Wie geht es mit BigDecimal, Instant und Nullables um?

BigDecimal kommt als reiner numerischer Text raus (kein BigDecimal("...")-Wrapper). Instant und LocalDateTime werden zu ISO-8601-Strings. Nullables mit null-Wert werden zu leeren Elementen statt weggelassen, damit die Form konsistent bleibt für Consumer, die gegen ein XSD validieren.

Was ist mit Sealed Classes, Lists und Maps?

Sealed-Class-Hierarchien werden mit einem Type-Discriminator-Attribut flach gemacht, damit du sie round-trippen kannst. List<T> wird zu einem Container-Element mit einem Kind pro Item, benannt nach dem Elementtyp — aus einer List<OrderItem> items wird <items><OrderItem/><OrderItem/></items>. Map<K,V> wird zu einem Container aus <Entry><Key/><Value/></Entry>.

Wird mein Code gespeichert?

Dein Code wird zur Konvertierung an das Backend geschickt und nicht persistiert — wir loggen den Payload nicht. Wie immer bei Online-Tools: wenn der Code wirklich sensibel ist, schau ihn dir vor dem Einfügen nochmal an.

Was, wenn das Kotlin etwas Ungewöhnliches hat — Companion Objects, Extension Functions, Coroutines?

Companion Objects werden für die XML-Ausgabe ignoriert, weil sie nicht Teil des Instanz-Zustands sind. Extension Functions und Top-Level-Funktionen werden übersprungen. Wenn der Code selbst Syntaxfehler hat, fix zuerst die offensichtlichen — der Parser ist nachsichtig, aber kein Hellseher.

Andere Tools, die nützlich sein könnten

Kotlin zu XML ist nur ein Puzzlestück. Folgende lassen sich gut kombinieren: