Arbeiten mit XML in Kotlin: Bibliotheken, Parsing und Dokumenterstellung

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

Arbeiten mit XML in Kotlin: Bibliotheken, Parsing und Dokumenterstellung



XML (eXtensible Markup Language) bleibt ein gefragtes Format für die Speicherung und Übertragung strukturierter Daten, insbesondere in Legacy-Systemen, Konfigurationsdateien und Webdiensten. Kotlin, das vollständig mit Java kompatibel ist, bietet Zugriff auf alle klassischen Java-Bibliotheken für die Arbeit mit XML sowie native Lösungen. In diesem Artikel behandeln wir die grundlegenden Ansätze: Parsing, Erstellung und Serialisierung von XML-Dokumenten in Kotlin.



1. Integrierte JDK-Mittel: DOM, SAX, StAX

Dank der vollständigen Interoperabilität mit Java können in Kotlin die Standard-APIs direkt verwendet werden:

  • DOM (Document Object Model) — lädt das gesamte Dokument in den Speicher, geeignet für Änderungen.
  • SAX (Simple API for XML) — ereignisgesteuerter Parser, minimaler Speicherverbrauch.
  • StAX (Streaming API for XML) — Streaming-Parser mit cursor- oder ereignisbasiertem Ansatz.


Beispiel für XML-Parsing mit DOM in 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. Bibliothek Simple XML (org.simpleframework.xml)

Simple XML ist eine beliebte Bibliothek zur Serialisierung/Deserialisierung von Objekten in XML. Sie verwendet Annotationen und benötigt keine Konfigurationsdateien. Ideal für REST-APIs mit XML-Antworten.



Einbindung (Gradle):

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


Beispiel für ein Modell und Deserialisierung:

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 mit XML-Format

Für plattformübergreifende Projekte (KMP) ist die Verwendung von kotlinx.serialization mit einem benutzerdefinierten XML-Format praktisch. Es gibt Drittanbieter-Adapter, z. B. kotlinx-serialization-xml (aus der Community).



Beispiel mit der Bibliothek nl.adaptivity.xmlutil (unterstützt 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 und XSLT in Kotlin

Für die Datenselektion nach komplexen Kriterien verwenden Sie XPath. In Kotlin erfolgt dies über die Standard-Java-Klassen javax.xml.xpath

Empfehlungen