Pega Kotlin a la izquierda y pulsa "Convertir" — lo pasamos a XMLPega código Kotlin

Qué hace esta herramienta

Si alguna vez has tenido que escribir a mano un payload XML para una data class de Kotlin — para un archivo de recursos de Android, un endpoint SOAP que todavía no han jubilado, o un fixture de un test de integración — ya sabes lo pesado que es teclearlo. Pega aquí el Kotlin y obtienes XML bien formado en una pasada. Una sola data class, un archivo con varias data classes y sealed classes, o una instancia poblada tipo val order = Order(...) — mismo resultado: un documento XML completo con todas las propiedades intactas.

No es un reemplazo tonto de strings. El convertidor sabe cómo serializa Kotlin a XML de verdad — más o menos como lo hace kotlinx.serialization. Los BigDecimal salen como texto numérico plano, los Instant y LocalDateTime se convierten en cadenas ISO-8601, los nullables con valor null se quedan como elementos vacíos, y List<T> y Map<K,V> siguen una forma de contenedor consistente — cada lista se vuelve un elemento envoltorio con un hijo por ítem, nombrado según el tipo del elemento.

Las anotaciones de serialización también se respetan. Un @SerialName("x") sobre una propiedad renombra el elemento en la salida, @Transient quita la propiedad, y un @SerialName("x") a nivel de clase renombra el elemento raíz. Las jerarquías de sealed class se aplanan con un discriminador de tipo para que puedas hacer round-trip después. Si pegas varias data classes, cada una aparece en la salida con los tipos anidados expandidos y los valores por defecto rellenos. Si quieres la versión larga, merece la pena leer la documentación oficial de serialización de Kotlin.

Cómo usarlo

Tres pasos. Funciona igual si pegas cinco líneas o un archivo de modelos completo.

1

Pega tu Kotlin (o prueba el ejemplo)

Suelta tu Kotlin en el editor de la izquierda tal cual. Una data class, una jerarquía de sealed class, una val instancia poblada o un archivo con varias clases — todo vale. Pulsa Cargar ejemplo si quieres ver antes un caso realista.

No hace falta que quites los import, borres anotaciones ni limpies la sintaxis de Kotlin. Deja el código tal como lo ves en tu IDE. Solo pégalo.

2

Pulsa Convertir

Haz clic en el botón verde Convertir. La herramienta lee el Kotlin, conserva cada clase y propiedad, y construye el XML de una pasada. Verás un indicador de carga corto mientras trabaja.

3

Copia el XML

El panel de la derecha se llena con XML indentado y bien formado que cualquier parser XML que cumpla el estándar aceptará. Cópialo directamente a tu recurso Android, petición SOAP, archivo de configuración o fixture de test.

Cuándo te saca las castañas del fuego

XML de layouts y recursos de Android

Tienes un modelo Kotlin que se mapea a un <a href="https://developer.android.com/guide/topics/resources/providing-resources" target="_blank" rel="noopener">recurso XML de Android</a> — una pantalla de preferencias, un string-array, un conjunto de atributos personalizados. Pega la clase, saca el XML y pégalo en res/xml o res/values.

Clientes SOAP sobre la JVM

Un tipo de petición Kotlin tiene que salir de la app como SOAP. Pega la data class, suelta el cuerpo XML en SoapUI o Postman y verifica el contrato sin escribir el sobre a mano.

Semillas para fixtures de test

Convierte una instancia poblada <code>val order = Order(...)</code> de tu test unitario en un archivo XML de seed para tests de integración, servidores mock o sistemas legacy que todavía hablan XML.

Documentación siempre sincronizada

Genera ejemplos XML para un README, una referencia de API o docs de esquema con XSD directamente desde tus modelos Kotlin reales, para que la documentación refleje el código en vez de irse desviando.

Preguntas habituales

¿Puedo pegar varias data classes a la vez?

Sí — pega un archivo entero. Cada data class o sealed class de primer nivel sale con los tipos anidados expandidos y los valores por defecto rellenos. Nada se descarta en silencio.

¿Respeta @SerialName y @Transient?

Sí. @SerialName("x") en una propiedad renombra el elemento en la salida, @SerialName("x") en una clase renombra el elemento raíz envoltorio, y @Transient quita la propiedad por completo. Es el comportamiento que obtienes con kotlinx.serialization.

¿Cómo trata BigDecimal, Instant y los nullables?

BigDecimal sale como texto numérico plano (sin envoltorio BigDecimal("...")). Instant y LocalDateTime se vuelven cadenas ISO-8601. Los nullables con valor null quedan como elementos vacíos en lugar de eliminarse, para que la forma sea consistente si validas contra un XSD.

¿Y con sealed classes, listas y maps?

Las jerarquías de sealed class se aplanan con un atributo discriminador de tipo para que puedas hacer round-trip. List<T> se convierte en un elemento contenedor con un hijo por ítem, nombrado según el tipo del elemento — un List<OrderItem> items pasa a ser <items><OrderItem/><OrderItem/></items>. Map<K,V> pasa a ser un contenedor de <Entry><Key/><Value/></Entry>.

¿Se guarda mi código?

Tu código se envía al backend para la conversión y no se persiste — no logueamos el payload. Como siempre con herramientas online, si es código realmente sensible, échale un vistazo antes de pegarlo.

¿Y si el Kotlin tiene algo raro — companion objects, funciones de extensión, corrutinas?

Los companion objects se ignoran para la salida XML porque no forman parte del estado de la instancia. Las funciones de extensión y las funciones top-level se saltan. Si el código en sí tiene errores de sintaxis, arregla los obvios primero — el parser es tolerante, pero no lee la mente.

Otras herramientas que te pueden venir bien

Kotlin a XML es una pieza del puzzle. Estas combinan bien con ella: