Kotlin Serialization是Kotlin官方提供的多格式序列化框架,默认常用的是JSON,但通过扩展模块也能方便地序列化为XML。借助kotlinx-serialization-xml库,我们可以用声明式注解描述类与XML节点的映射关系,再把对象编码成标准XML字符串。

添加依赖
在Gradle项目中需要引入核心序列化库和XML扩展。以Kotlin DSL为例:
plugins {
kotlin("plugin.serialization") version "1.9.22"
}
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.2")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-xml:0.4.0")
}
定义数据类
使用@Serializable注解标记类,并用@XmlSerialName指定XML元素名称。字段可用@XmlElement标明是否为子元素。
import kotlinx.serialization.Serializable
import kotlinx.serialization.xml.XmlElement
import nl.adaptivity.xmlutil.serialization.XmlSerialName
@Serializable
@XmlSerialName("user", "", "")
data class User(
@XmlElement(true)
val id: Int,
@XmlElement(true)
val name: String,
@XmlElement(true)
val email: String
)
执行序列化
创建Xml实例并调用encodeToString方法即可将对象转为XML文本。
import nl.adaptivity.xmlutil.serialization.XML
fun main() {
val user = User(1, "张三", "test@ipipp.com")
val xml = XML()
val result = xml.encodeToString(user)
println(result)
}
运行后输出的XML类似下面内容:
<user> <id>1</id> <name>张三</name> <email>test@ipipp.com</email> </user>
处理嵌套对象
如果数据类包含另一个可序列化对象,框架会自动展开为嵌套节点。例如订单包含用户:
@Serializable
@XmlSerialName("order", "", "")
data class Order(
@XmlElement(true) val orderId: String,
@XmlElement(true) val user: User
)
只要User本身可序列化,直接编码Order就能得到带user子元素的XML。
小结
通过引入XML扩展库、用注解配置节点名以及使用XML.encodeToString,就能轻松把Kotlin对象序列化为XML。注意版本兼容性,并合理使用@XmlSerialName和@XmlElement控制输出结构。
Kotlin_SerializationXML序列化修改时间:2026-07-26 03:03:15