class: center, middle, inverse # Serialització XML .footnote[Mateu Yábar] --- # Serialització XML - Podem usar la serialització també per XML --- # Dependencies ``` dependencies { // (...) implementation("io.github.pdvrieze.xmlutil:core-jvm:0.84.2") implementation("io.github.pdvrieze.xmlutil:serialization-jvm:0.84.2") } ``` --- # Escriptura XML ``` @kotlinx.serialization.Serializable data class Person(val name: String, val age: Int) fun main() { val person = Person("Mila", 55) val xmlPerson = XML.encodeToString(person) Path("build/person.xml").writeText(xmlPerson) } ``` ```xml
``` --- # Lectura XML ``` val xml = Path("build/person.xml").readText() val person : Person = XML.decodeFromString(xml) println(person) ``` --- # Xml amb relacions ``` @kotlinx.serialization.Serializable data class Box(val item : Item) @kotlinx.serialization.Serializable data class Item(val name: String) ``` ```
``` --- # Xml amb llistes ``` @kotlinx.serialization.Serializable data class Box(val item : List
) @kotlinx.serialization.Serializable data class Item(val name: String) ``` ```
``` --- # Configurar Xml - Posar atribut com a valor ``` @kotlinx.serialization.Serializable data class TextBox(@XmlValue(true) val text: String, val height: Int, val width: Int) ``` ```xml
Hello World
``` --- # Configurar XML - Crear element per un atribut ``` @kotlinx.serialization.Serializable data class Car(@XmlElement(true) val platteNumber: String, val model: String) ``` ```xml
B6546IJ
``` --- # Configurar XML - Llista com a llista d'elements ``` @kotlinx.serialization.Serializable data class Box(@XmlChildrenName("Item", "", "") @SerialName("Items") val item : List
) @kotlinx.serialization.Serializable data class Item(val name: String) ``` ```xml
``` --- # Serializtació en altres formats - https://github.com/Kotlin/kotlinx.serialization/blob/master/formats/README.md