Wklej Kotlin po lewej i kliknij "Konwertuj" — zamienimy to na XMLWklej kod Kotlin

Co robi to narzędzie

Jeśli kiedykolwiek musiałeś ręcznie spisać XML-owy payload dla data class w Kotlinie — na potrzeby pliku zasobów Androida, endpointu SOAP, który wciąż nie doczekał się wymiany, albo fixture'a do testu integracyjnego — wiesz, jak męczące jest to pisanie. Wklej tu Kotlina, a w jednym przebiegu dostaniesz poprawnie sformowany XML. Pojedyncza data class, plik z kilkoma data class i sealed class, albo uzupełniona instancja val order = Order(...) — efekt ten sam: kompletny dokument XML z zachowaną każdą właściwością.

To nie jest głupia podmiana stringów. Konwerter wie, jak Kotlin faktycznie serializuje do XML — mniej więcej tak, jak robi to kotlinx.serialization. Wartości BigDecimal wychodzą jako zwykły tekst liczbowy, Instant i LocalDateTime stają się stringami ISO-8601, nullable z wartością null stają się pustymi elementami, a List<T> i Map<K,V> mają spójną formę kontenera — każda lista staje się elementem-wrapperem z jednym dzieckiem na pozycję, nazwanym jak typ elementu.

Adnotacje serializacyjne też są respektowane. @SerialName("x") na właściwości zmienia nazwę elementu w wyjściu, @Transient pomija właściwość, a @SerialName("x") na poziomie klasy zmienia nazwę elementu-opakowania. Hierarchie sealed class są spłaszczane z dyskryminatorem typu, więc możesz później wykonać round-trip. Jak wkleisz kilka data class, każda wyląduje w wyjściu z rozwiniętymi typami zagnieżdżonymi i wypełnionymi wartościami domyślnymi. Jeśli chcesz pogłębioną wersję, warto zajrzeć do dokumentacji serializacji Kotlina.

Jak tego użyć

Trzy kroki. Działa tak samo, czy wklejasz pięć linii, czy cały plik modelu.

1

Wklej swojego Kotlina (albo wypróbuj przykład)

Wrzuć Kotlina do lewego edytora tak jak jest. Data class, hierarchia sealed class, uzupełniona instancja val albo plik z kilkoma klasami — wszystko ok. Kliknij Wczytaj przykład, jeśli chcesz najpierw zobaczyć realistyczny przypadek.

Nie musisz usuwać import-ów, kasować adnotacji ani porządkować składni Kotlina. Zostaw kod w takiej formie, w jakiej wygląda w IDE. Po prostu wklej.

2

Kliknij Konwertuj

Wciśnij zielony przycisk Konwertuj. Narzędzie czyta Kotlina, zachowuje każdą klasę i właściwość, i buduje XML w jednym przebiegu. Podczas pracy pojawia się krótki wskaźnik ładowania.

3

Skopiuj XML

Prawy panel wypełnia się wciętym, poprawnie sformowanym XML-em, który zaakceptuje każdy zgodny ze standardem parser XML. Skopiuj go prosto do zasobu Androida, żądania SOAP, pliku konfiguracyjnego albo fixture'a testowego.

Kiedy naprawdę się przydaje

XML layoutów i zasobów Androida

Masz model Kotlina, który mapuje się na <a href="https://developer.android.com/guide/topics/resources/providing-resources" target="_blank" rel="noopener">zasób XML Androida</a> — ekran preferencji, string-array, własny zestaw atrybutów. Wklej klasę, weź XML, wklej do res/xml albo res/values.

Klienci SOAP na JVM

Typ żądania w Kotlinie musi opuścić aplikację jako SOAP. Wklej data class, wrzuć ciało XML do SoapUI albo Postmana, zweryfikuj kontrakt bez pisania koperty ręcznie.

Dane testowe dla fixture'ów

Zamień uzupełnioną instancję <code>val order = Order(...)</code> z testu jednostkowego na plik XML-ową pod testy integracyjne, mock serwery albo starsze systemy, które dalej mówią w XML.

Dokumentacja zgodna z kodem

Generuj przykłady XML do README, referencji API albo dokumentów schematu opartego na XSD prosto z faktycznych modeli Kotlina, dzięki czemu dokumentacja trzyma się kodu zamiast dryfować.

Częste pytania

Czy mogę wkleić kilka data class naraz?

Tak — wklej cały plik. Każda data class lub sealed class z najwyższego poziomu przechodzi z rozwiniętymi typami zagnieżdżonymi i wypełnionymi wartościami domyślnymi. Nic nie znika po cichu.

Czy respektuje @SerialName i @Transient?

Tak. @SerialName("x") na właściwości zmienia nazwę elementu w wyjściu, @SerialName("x") na klasie zmienia nazwę elementu-opakowania, a @Transient usuwa właściwość w całości. Takie zachowanie dostajesz z kotlinx.serialization.

Jak obsługuje BigDecimal, Instant i nullable?

BigDecimal wychodzi jako zwykły tekst liczbowy (bez wrappera BigDecimal("...")). Instant i LocalDateTime stają się stringami ISO-8601. Nullable z wartością null stają się pustymi elementami zamiast znikać, żeby forma była spójna dla konsumentów walidujących po XSD.

A sealed class, listy i mapy?

Hierarchie sealed class są spłaszczane atrybutem dyskryminatora typu, żebyś mógł zrobić round-trip. List<T> staje się elementem-kontenerem z jednym dzieckiem na pozycję, nazwanym jak typ elementu — List<OrderItem> items zamienia się w <items><OrderItem/><OrderItem/></items>. Map<K,V> staje się kontenerem <Entry><Key/><Value/></Entry>.

Czy mój kod jest zapisywany?

Twój kod jest wysyłany do backendu na potrzeby konwersji i nie jest przechowywany — nie logujemy payloadu. Jak zawsze przy narzędziach online: jeśli kod jest naprawdę wrażliwy, przejrzyj go przed wklejeniem.

A jeśli Kotlin ma coś nietypowego — companion objects, funkcje rozszerzeń, korutyny?

Companion objects są ignorowane dla wyjścia XML, bo nie są częścią stanu instancji. Funkcje rozszerzeń i funkcje top-level są pomijane. Jeśli sam kod ma błędy składniowe, popraw najpierw te oczywiste — parser jest wyrozumiały, ale nie czyta w myślach.

Inne narzędzia, które mogą się przydać

Kotlin do XML to jeden element układanki. Te dobrze się z nim dogadują: