Android 使用SimpleXmlConverterFactory/Kotlin解析XML数组
如何从以下XML格式解析XML元素数组“echeance”: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
<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
}