Trabajo con XML en Kotlin: bibliotecas y ejemplos de código

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Trabajo con XML en Kotlin: descripción general de bibliotecas y ejemplos prácticos



XML (eXtensible Markup Language) sigue siendo uno de los formatos clave para almacenar y transmitir datos estructurados. En el lenguaje Kotlin, que funciona sobre la JVM, están disponibles todas las bibliotecas de Java para trabajar con XML, así como varias soluciones nativas de Kotlin. En este artículo, consideraremos tres enfoques principales para trabajar con XML: SimpleXML (análisis con anotaciones), XStream (serialización rápida) y kotlinx.serialization (biblioteca nativa de Kotlin).



1. SimpleXML — análisis de XML con anotaciones



SimpleXML es una biblioteca popular para Java/Kotlin que permite convertir XML a objetos y viceversa mediante anotaciones. Es ideal cuando la estructura del XML se conoce de antemano.



Inclusión (Gradle):

dependencies {    implementation("org.simpleframework:simple-xml:2.7.1")}


Ejemplo: análisis de un feed RSS

Supongamos que tenemos un XML con noticias:

<rss version="2.0">    <channel>        <item>            <title>Noticia 1</title>            <link>https://example.com/1</link>        </item>        <item>            <title>Noticia 2</title>            <link>https://example.com/2</link>        </item>    </channel></rss>


Creemos modelos de datos con anotaciones:

import org.simpleframework.xml.*

@Root(name = "rss", strict = false)data class Rss( @field:Element(name = "channel") var channel: Channel? = null)

@Root(name = "channel", strict = false)data class Channel( @field:ElementList(inline = true, entry = "item") var items: List<Item> = emptyList())

@Root(name = "item", strict = false)data class Item( @field:Element(name = "title") var title: String = "",

@field:Element(name = "link") var link: String = "")


Análisis del XML:

import org.simpleframework.xml.core.Persister

fun parseRss(xmlString: String): Rss? { return try { val serializer = Persister() serializer.read(Rss::class.java, xmlString) } catch (e: Exception) { println("Error de análisis: ${e.message}") null }}

// Uso:val xml = "<rss version=\\"2.0\\">...</rss>" // tu XMLval rss = parseRss(xml)rss?.channel?.items?.forEach { item -> println("${item.title}: ${item.link}")}


Ventajas de SimpleXML: simplicidad, soporte para herencia, convertidores integrados para fechas y números.



2. XStream — serialización rápida de objetos



XStream es otra biblioteca potente que puede serializar objetos a XML sin anotaciones. Utiliza reflexión y es adecuada para prototipado.



Inclusión:

dependencies {    implementation("com.thoughtworks.xstream:xstream:1.4.20")}


Ejemplo: serialización y deserialización

import com.thoughtworks.xstream.XStream

data class Person(val name: String, val age: Int)

fun main() { val xstream = XStream() xstream.alias("person", Person::class.java)

// Serialización val person = Person("Iván", 30) val xml = xstream.toXML(person) println(xml) // Salida: <person><name>Iván</name><age>30</age></person>

// Deserialización val restored = xstream.fromXML(xml) as Person println("Nombre: ${restored.name}, Edad: ${restored.age}")}


Características de XStream:

  • No requiere anotaciones — funciona "de fábrica"
  • Soporta colecciones, arrays, objetos anidados
  • Se pueden configurar alias para clases y campos
  • Es

Recommendations