您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Kotlin 1.2.21 + SimpleXml 2.3.0-使用列表错误(必须将标记设置为get方法)

Kotlin 1.2.21 + SimpleXml 2.3.0-使用列表错误(必须将标记设置为get方法)

尝试添加@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.Element
import org.simpleframework.xml.ElementList
import org.simpleframework.xml.Root
import org.simpleframework.xml.core.Persister

private 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)
}
其他 2022/1/1 18:27:11 有596人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶