Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用SimpleXmlConverterFactory/Kotlin解析XML数组_Android_Kotlin_Xml Parsing_Retrofit2 - Fatal编程技术网

Android 使用SimpleXmlConverterFactory/Kotlin解析XML数组

Android 使用SimpleXmlConverterFactory/Kotlin解析XML数组,android,kotlin,xml-parsing,retrofit2,Android,Kotlin,Xml Parsing,Retrofit2,如何从以下XML格式解析XML元素数组“echeance”: <data> <code>353</code> <city>Ville</city> <echeance ech="3"> <subData>45</subData> </echeance> <echeance ech="6"> <subD

如何从以下XML格式解析XML元素数组“echeance”:

<data>
    <code>353</code>
    <city>Ville</city>
    <echeance ech="3">
        <subData>45</subData>
    </echeance>
    <echeance ech="6">
        <subData>45</subData>
    </echeance>
    <echeance ech="9">
        <subData>45</subData>
    </echeance>
</data>
我希望使用SimpleXmlConverterFactory在包含“Echeance”对象数组的数据对象中解析此数据

现在,我有一个kotlin代码:

data class Data(val ville :String, val code :Int) {

    @get:Element(name="city")
    lateinit var city :String

    @get:Element(name="code") var remoteCode :Int = -1

    @get:ElementArray(name="echeance") lateinit var echeances :Array<Echeance>
}

class Echeance {

    @get:Attribute(name="ech") var value :Int = 0
    @get:Element(name="subData") var value :Int = 0 

}
数据类数据(val-ville:String,val-code:Int){
@get:Element(name=“city”)
lateinit var city:字符串
@get:Element(name=“code”)var remoteCode:Int=-1
@get:ElementArray(name=“echeance”)lateinit var echeances:Array
}
阶级意义{
@get:Attribute(name=“ech”)var值:Int=0
@get:Element(name=“subData”)var值:Int=0
}
不幸的是,我无法更改XML格式,例如在父“echeances”节点中嵌入“echance”节点

谢谢。

我找到了答案

我必须将我的eCheanse类注释为

@Root(name = "echeance")
然后删除my@ElementList echeances的name属性并标记为inline

@field:ElementList(inline=true,required=false)lateinit var echeances:List
完整代码:

data class Data(val ville :String, val code :Int) {

    @field:Element(name="city")
    lateinit var city :String

    @field:Element(name="code") var remoteCode :Int = -1

    @field:ElementList(inline = true, required = false) lateinit var echeances :List<Echeance>

}

@Root(name = "echeance")
class Echeance {

    @field:Attribute(name="ech") var value :Int = 0
    @field:Element(name="subData") var value :Int = 0 

}
数据类数据(val-ville:String,val-code:Int){
@字段:元素(名称=“城市”)
lateinit var city:字符串
@字段:Element(name=“code”)var remoteCode:Int=-1
@字段:ElementList(inline=true,required=false)lateinit var echeances:List
}
@Root(name=“echeance”)
阶级意义{
@字段:属性(name=“ech”)变量值:Int=0
@字段:元素(name=“subData”)变量值:Int=0
}
data class Data(val ville :String, val code :Int) {

    @field:Element(name="city")
    lateinit var city :String

    @field:Element(name="code") var remoteCode :Int = -1

    @field:ElementList(inline = true, required = false) lateinit var echeances :List<Echeance>

}

@Root(name = "echeance")
class Echeance {

    @field:Attribute(name="ech") var value :Int = 0
    @field:Element(name="subData") var value :Int = 0 

}