【发布时间】:2020-07-15 20:07:19
【问题描述】:
我正在尝试让 Retrofit 和 SimpleXmlConverter 在我的 Kotlin Android 项目上运行(出于显而易见的原因,我之前只使用过 json),并且不断遇到各种错误。现在的错误是“无法满足...ElementList...方法'itemsList'”。
我最终试图将元素列表放入 Kotlin 列表中。下面是 XML 响应和我编写的反序列化类。
有什么跳出来的吗?
编辑:我还尝试为所有 Element 和 ElementList 注释设置required = false,当我这样做时它不会出错,但我没有在列表中恢复任何内容。
XML 响应
<?xml version="1.0" encoding="UTF-8"?>
<response xmlns="" xmlns:xsd="" xmlns:xsi="">
<result>
<status>
<code>0000</code>
<statusMessage>The status message</statusMessage>
</status>
<item>
<code>1</code>
<display>One</display>
</item>
<item>
<code>2</code>
<display>Two</display>
</item>
<item>
<code>3</code>
<display>Three</display>
</item>
</result>
</response>
响应.kt
@Root(name = "response", strict = false)
class Response {
@get:Element(name = "status", required = false)
@set:Element(name = "status", required = false)
@Path("result")
var status: ResponseStatus? = null
@get:ElementList(name = "item", inline = true, required = true)
@set:ElementList(name = "item", inline = true, required = true)
@Path("result")
var itemsList: List<Items>? = null
}
Items.kt
@Root(name = "item", strict = false)
class Items {
@get:Element(name = "code", required = true)
@set:Element(name = "code", required = true)
var code: String? = null
@get:Element(name = "display", required = true)
@set:Element(name = "display", required = true)
var display: String? = null
}
ResponseStatus.kt
@Root(name = "status", strict = false)
class ResponseStatus {
@get:Element(name = "code", required = false)
@set:Element(name = "code", required = false)
var code: String? = null
@get:Element(name = "statusMessage", required = false)
@set:Element(name = "statusMessage", required = false)
var statusMessage: String? = null
}
【问题讨论】:
标签: android kotlin retrofit2 simple-xml-converter