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 Aussi dans la bibliothèque
Travailler avec les archives ZIP en Swift (iOS/macOS) : guide complet
Travailler avec Excel en Go (Golang) : bibliothèques exelize et tealeg/xlsx
Travailler avec CSV en PHP : lecture, écriture et traitement des données
Travailler avec CSV en TypeScript : bibliothèques, analyse et génération de données