Travailler avec XML en Kotlin : bibliothèques, analyse et création de documents

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travailler avec XML en Kotlin : bibliothèques, analyse et création de documents



XML (eXtensible Markup Language) reste un format très demandé pour le stockage et la transmission de données structurées, en particulier dans les systèmes legacy, les fichiers de configuration et les services web. Kotlin, étant entièrement compatible avec Java, donne accès à toutes les bibliothèques Java classiques pour travailler avec XML, et propose également des solutions natives. Dans cet article, nous aborderons les approches principales : l'analyse, la création et la sérialisation de documents XML en Kotlin.



1. Outils intégrés du JDK : DOM, SAX, StAX

Grâce à une interopérabilité totale avec Java, il est possible d'utiliser directement les API standard en Kotlin :

  • DOM (Document Object Model) — charge l'intégralité du document en mémoire, pratique pour les modifications.
  • SAX (Simple API for XML) — analyseur orienté événements, consommation mémoire minimale.
  • StAX (Streaming API for XML) — analyseur en flux avec une approche par curseur ou par événements.


Exemple d'analyse XML avec DOM en Kotlin :

import javax.xml.parsers.DocumentBuilderFactoryimport org.w3c.dom.Element

fun parseXmlWithDom(xmlString: String) { val factory = DocumentBuilderFactory.newInstance() val builder = factory.newDocumentBuilder() val document = builder.parse(xmlString.byteInputStream()) val root = document.documentElement

val items = root.getElementsByTagName("item") for (i in 0 until items.length) { val item = items.item(i) as Element val name = item.getElementsByTagName("name").item(0).textContent val price = item.getElementsByTagName("price").item(0).textContent println("Item: $name, Price: $price") }}


2. Bibliothèque Simple XML (org.simpleframework.xml)

Simple XML est une bibliothèque populaire pour la sérialisation/désérialisation d'objets en XML. Elle utilise des annotations et ne nécessite pas de fichiers de configuration. Idéale pour les API REST avec réponses XML.



Ajout de la dépendance (Gradle) :

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


Exemple de modèle et de désérialisation :

import org.simpleframework.xml.*import org.simpleframework.xml.core.Persister

@Root(name = "catalog")data class Catalog( @field:ElementList(inline = true) var books: List<Book> = emptyList())

@Root(name = "book")data class Book( @field:Element(name = "title") var title: String = "", @field:Element(name = "author") var author: String = "", @field:Attribute(name = "id") var id: Int = 0)

fun deserializeXml(xml: String): Catalog { val serializer = Persister() return serializer.read(Catalog::class.java, xml)}


3. kotlinx.serialization avec le format XML

Pour les projets multiplateformes (KMP), il est pratique d'utiliser kotlinx.serialization avec un format XML personnalisé. Il existe des adaptateurs tiers, par exemple kotlinx-serialization-xml (de la communauté).



Exemple avec la bibliothèque nl.adaptivity.xmlutil (prend en charge JVM, JS, Native) :

import nl.adaptivity.xmlutil.serialization.XMLimport kotlinx.serialization.*

@Serializabledata class Person( val name: String, @XmlSerialName("age") val years: Int)

fun main() { val xml = XML { indent = 4 xmlDeclMode = XmlDeclMode.Auto } val person = Person("Alice", 30) val result = xml.encodeToString(Person.serializer(), person) println(result) // <Person> // <name>Alice</name> // <age>30</age> // </Person>}


4. XPath et XSLT en Kotlin

Pour la sélection de données selon des critères complexes, utilisez XPath. En Kotlin, cela se fait via les classes Java standard javax.xml.xpath

Recommendations