参数没有匹配项; SimpleXML的

时间:2017-08-17 17:32:31

标签: kotlin retrofit2

我将retrofitSimpleXMLConverterFactory一起使用。

我总是得到一个

ConstructorException: Parameter 'success' does not have a match in class ResponseInfo

我不知道出了什么问题。 xml非常简单,我只想要来自success节点的字符串。

的xml:

<?xml version="1.0" encoding="UTF-8"?>
<response>
    <success>LoremIpsum</success>
</response>

ResponseInfo:

@Root(strict = false, name = "response")
data class ResponseInfo(@Element(required = false, name = "success) var success: String)

编辑1:我测试了Api调用并返回给定的xml。

由于

2 个答案:

答案 0 :(得分:9)

最后,我成功解决了这个问题。

问题是ResponseInfo类。我把它改成

之后
@Root(strict = false, name="response)
data class ResponseInfo @JvmOverloads constructor(
  @field:element(name = "success") var success: String = ""
)

一切正常。

您需要有一个空构造函数,所有属性都必须是可变的(var),并且您必须在field: - 注释前面附加@Element@JvmOverloads结合默认值将为您创建空构造函数以及所有其他构造函数变体。

答案 1 :(得分:4)

如果你想避免使用deafult构造函数,你必须同时使用fieldparam use-site target。它看起来像这样:

@Root(strict = false, name = "response")
data class ResponseInfo(
    @field:Element(name = "success") @param:Element(name = "success") var success: String
)

this comment所述,似乎没有任何方法可以合并两个使用网站目标。