Travailler avec XML en Kotlin : bibliothèques et outils pour l'analyse et la création

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 : aperçu des bibliothèques et exemples pratiques



Malgré l'adoption active de JSON et YAML, XML reste un format très utilisé dans les systèmes d'entreprise, les fichiers de configuration, les protocoles SOAP et le développement Android. Kotlin, étant compatible avec Java, donne accès à toutes les bibliothèques Java matures pour travailler avec XML, et possède également ses propres solutions natives. Dans cet article, nous allons examiner cinq approches principales pour le traitement XML en Kotlin, y compris l'analyse, la création et la validation de documents.



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

Kotlin utilise directement l'API Java standard pour XML. C'est la méthode la plus simple pour des tâches rapides, mais elle nécessite beaucoup de code standard.



DOM (Document Object Model)

Charge tout le XML en mémoire et permet un accès arbitraire aux nœuds. Convient aux petits documents.

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

fun parseWithDOM(xml: String) { val factory = DocumentBuilderFactory.newInstance() val builder = factory.newDocumentBuilder() val doc = builder.parse(xml.byteInputStream()) val books = doc.getElementsByTagName("book") for (i in 0 until books.length) { val book = books.item(i) as Element val title = book.getElementsByTagName("title").item(0).textContent println("Livre : $title") }}


SAX (Simple API for XML)

Analyseur en flux, ne charge pas tout le document en mémoire. Efficace pour les gros fichiers, mais complexe à implémenter.

import org.xml.sax.helpers.DefaultHandlerimport org.xml.sax.Attributesimport javax.xml.parsers.SAXParserFactory

class BookHandler : DefaultHandler() { override fun startElement(uri: String, localName: String, qName: String, attributes: Attributes) { if (qName == "book") { println("Livre trouvé avec l'id : ${attributes.getValue("id")}") } }}

fun parseWithSAX(xml: String) { val factory = SAXParserFactory.newInstance() val parser = factory.newSAXParser() parser.parse(xml.byteInputStream(), BookHandler())}


2. JDOM — une API pratique pour Kotlin

JDOM est une bibliothèque Java populaire qui s'intègre parfaitement avec Kotlin grâce au support des collections et des fonctions d'extension. Elle permet de lire, modifier et créer du XML sans usines encombrantes.



Analyse et navigation

import org.jdom2.input.SAXBuilderimport org.jdom2.Element

fun parseWithJDOM(xml: String) { val builder = SAXBuilder() val doc = builder.build(xml.byteInputStream()) val root = doc.rootElement root.getChildren("book").forEach { book -> val title = book.getChildText("title") val author = book.getChildText("author") println("$title — $author") }}


Création de XML à partir de zéro

import org.jdom2.Documentimport org.jdom2.Elementimport org.jdom2.output.XMLOutputter

fun createXML(): String { val root = Element("library") val book = Element("book").apply { setAttribute("id", "1") addContent(Element("title").setText("Kotlin in Action")) addContent(Element("author").setText("Dmitry Jemerov")) } root.addContent(book) val doc = Document(root) val outputter = XMLOutputter().apply { format = org.jdom2.output.Format.getPrettyFormat() } return outputter.outputString(doc)}


3. XOM — simplicité et rigueur

XOM adhère au principe "immuable par défaut" — tous les nœuds, une fois créés, ne peuvent pas être modifiés, seulement remplacés. Cela rend le code prévisible et sûr. La bibliothèque vérifie automatiquement la correction de la structure.



import nu.xom.Builderimport nu.xom.Serializer

fun parseWithXOM(xml: String) { val builder = Builder() val doc = builder.build(xml, null) val root = doc.rootElement

Recommendations