尝试添加
@field到注释中
@Element*。您可以将属性移动到构造函数,也可以
data在类中添加修饰符。像这样:
@Root(name = "feed", strict = false)data class Feed( @field:ElementList(name = "entry", inline = true) var entriesList: List<Entry>? = null)@Root(name = "entry", strict = true)data class Entry( @field:Element(name = "id") var id: String? = null, @field:Element(name = "published") var published: String? = null)
有了这个,我就成功地反序列化了xml:
import org.simpleframework.xml.Elementimport org.simpleframework.xml.ElementListimport org.simpleframework.xml.Rootimport org.simpleframework.xml.core.Persisterprivate val testXml = """<feed> <entry> <id> someid </id> <published> somedate </published> </entry> <entry> <id> someid2 </id> <published> somedate2 </published> </entry></feed>""".trimIndent()@Root(name = "feed", strict = false)data class Feed( @field:ElementList(name = "entry", inline = true) var entriesList: List<Entry>? = null)@Root(name = "entry", strict = true)data class Entry( @field:Element(name = "id") var id: String? = null, @field:Element(name = "published") var published: String? = null)fun main(args: Array<String>) { println(testXml) val serializer = Persister() val example = serializer.read(Feed::class.java, testXml) println(example)}


