Arbeit mit XML in Kotlin: Bibliotheken und Werkzeuge für Parsing und Erstellung

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeit mit XML in Kotlin: Überblick über Bibliotheken und praktische Beispiele



Trotz der aktiven Einführung von JSON und YAML bleibt XML ein gefragtes Format in Unternehmenssystemen, Konfigurationsdateien, SOAP-Protokollen und der Android-Entwicklung. Kotlin, kompatibel mit Java, bietet Zugriff auf alle ausgereiften Java-Bibliotheken für die Arbeit mit XML und verfügt über eigene native Lösungen. In diesem Artikel werden wir fünf Hauptansätze zur XML-Verarbeitung in Kotlin behandeln, einschließlich Parsing, Erstellung und Validierung von Dokumenten.



1. Integrierte Mittel: DOM, SAX, StAX

Kotlin verwendet direkt die standardmäßige Java-API für XML. Dies ist der einfachste Weg für schnelle Aufgaben, erfordert jedoch viel Boilerplate-Code.



DOM (Document Object Model)

Lädt das gesamte XML in den Speicher und ermöglicht wahlfreien Zugriff auf Knoten. Geeignet für kleine Dokumente.

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("Buch: $title") }}


SAX (Simple API for XML)

Streaming-Parser, der nicht das gesamte Dokument in den Speicher lädt. Effizient für große Dateien, aber komplex in der Implementierung.

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("Buch mit id: ${attributes.getValue("id")} gefunden") } }}

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


2. JDOM — praktische API für Kotlin

JDOM ist eine beliebte Java-Bibliothek, die sich dank Unterstützung von Collections und Extension-Funktionen hervorragend in Kotlin integrieren lässt. Ermöglicht das Lesen, Ändern und Erstellen von XML ohne umständliche Fabriken.



Parsing und 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") }}


XML von Grund auf erstellen

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 — Einfachheit und Strenge

XOM folgt dem Prinzip "immutable by default" — alle Knoten können nach der Erstellung nicht mehr geändert, sondern nur ersetzt werden. Dies macht den Code vorhersagbar und sicher. Die Bibliothek prüft automatisch die Korrektheit der Struktur.



import nu.xom.Builderimport nu.xom.Serializer

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

Empfehlungen