Arbeiten mit XML in Kotlin: Bibliotheken und Codebeispiele

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: Überblick über Bibliotheken und praktische Beispiele



XML (eXtensible Markup Language) bleibt eines der wichtigsten Formate zum Speichern und Übertragen strukturierter Daten. In der Sprache Kotlin, die auf der JVM läuft, sind alle Java-Bibliotheken für die Arbeit mit XML verfügbar, sowie einige native Kotlin-Lösungen. In diesem Artikel betrachten wir drei Hauptansätze für die Arbeit mit XML: SimpleXML (annotationsbasiertes Parsen), XStream (schnelle Serialisierung) und kotlinx.serialization (native Kotlin-Bibliothek).



1. SimpleXML — annotationsbasiertes XML-Parsing



SimpleXML ist eine beliebte Bibliothek für Java/Kotlin, die es ermöglicht, XML mit Hilfe von Annotationen in Objekte und zurück zu konvertieren. Sie ist ideal geeignet, wenn die XML-Struktur im Voraus bekannt ist.



Einbindung (Gradle):

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


Beispiel: Parsen eines RSS-Feeds

Angenommen, wir haben ein XML mit Nachrichten:

<rss version="2.0">    <channel>        <item>            <title>Nachricht 1</title>            <link>https://example.com/1</link>        </item>        <item>            <title>Nachricht 2</title>            <link>https://example.com/2</link>        </item>    </channel></rss>


Erstellen wir Datenmodelle mit Annotationen:

import org.simpleframework.xml.*

@Root(name = "rss", strict = false)data class Rss( @field:Element(name = "channel") var channel: Channel? = null)

@Root(name = "channel", strict = false)data class Channel( @field:ElementList(inline = true, entry = "item") var items: List<Item> = emptyList())

@Root(name = "item", strict = false)data class Item( @field:Element(name = "title") var title: String = "",

@field:Element(name = "link") var link: String = "")


Parsen des XML:

import org.simpleframework.xml.core.Persister

fun parseRss(xmlString: String): Rss? { return try { val serializer = Persister() serializer.read(Rss::class.java, xmlString) } catch (e: Exception) { println("Parsing-Fehler: ${e.message}") null }}

// Verwendung:val xml = "<rss version=\\"2.0\\">...</rss>" // Ihr XMLval rss = parseRss(xml)rss?.channel?.items?.forEach { item -> println("${item.title}: ${item.link}")}


Vorteile von SimpleXML: Einfachheit, Unterstützung von Vererbung, integrierte Konverter für Daten und Zahlen.



2. XStream — schnelle Objektserialisierung



XStream ist eine weitere leistungsstarke Bibliothek, die Objekte ohne Annotationen in XML serialisieren kann. Sie verwendet Reflektion und eignet sich gut für das Prototyping.



Einbindung:

dependencies {    implementation("com.thoughtworks.xstream:xstream:1.4.20")}


Beispiel: Serialisierung und Deserialisierung

import com.thoughtworks.xstream.XStream

data class Person(val name: String, val age: Int)

fun main() { val xstream = XStream() xstream.alias("person", Person::class.java)

// Serialisierung val person = Person("Ivan", 30) val xml = xstream.toXML(person) println(xml) // Ausgabe: <person><name>Ivan</name><age>30</age></person>

// Deserialisierung val restored = xstream.fromXML(xml) as Person println("Name: ${restored.name}, Alter: ${restored.age}")}


Besonderheiten von XStream:

  • Benötigt keine Annotationen — funktioniert "out of the box"
  • Unterstützt Sammlungen, Arrays, verschachtelte Objekte
  • Aliase für Klassen und Felder können konfiguriert werden
  • Isst

Empfehlungen