JAXB отменяет сортировку элемента списка xml в одном объекте Kotlin - PullRequest
0 голосов
/ 25 октября 2019

У меня есть следующий XML для создания вложенных объектов Kotlin, но он не отображает все элементы TimeCycleData

<TimeCycle>
    <Last>
        <Date>2001-06-13T01:00:00.000Z</Date>
        <TimeCycleData>
            <Hours type="F">123</Hours>
        </TimeCycleData>
        <TimeCycleData>
            <Cycles>1234</Cycles>
        </TimeCycleData>
        <TimeCycleData>
            <Land>1234</Land>
        </TimeCycleData>
    </Last>
</TimeCycle>

и хочу отобразить следующие классы данных Kotlin

data class TimeCycle(
        @field:XmlElement(name = "Last")
        val last: Last? = null
)

data class Last(

        @field:XmlElement(name = "Date")
        @field:XmlJavaTypeAdapter(value = LocalDateTimeAdapter::class, type = LocalDateTime::class)
        val date: LocalDateTime? = null,

        @field:XmlElement(name = "TimeCycleData")
        val timeCycleData: TimeCycleData? = null
)

data class TimeCycleData(

        @field:XmlElement(name = "Hours")
        val hours: DurationDetails? = null,

        @field:XmlElement(name = "Cycles")
        val cycles: Int? = null,

        @field:XmlElement(name = "Land")
        val land: Int? = null
)

data class DurationDetails(

        @field:XmlValue
        @field:XmlJavaTypeAdapter(value = DurationAdapter::class, type = Duration::class)
        val value: Duration? = null,

        @field:XmlAttribute(name = "type")
        val type: String = ""
)

, когда я отменяю маршализациюXML, заполнен только первый TimeCycleData с Hours. Как я могу объединить все TimeCycleData в один объект?

ОБНОВЛЕНИЕ: исправлено отправлено xml

1 Ответ

1 голос
/ 25 октября 2019

Полагаю, что

        @field:XmlElement(name = "TimeCycleData")
        val timeCycleData: TimeCycleData? = null

должно быть объявлено каким-то образом

        @field:XmlElement(name = "TimeCycleData")
        @field:XmlElementWrapper(name = "TimeCycleInfo")
        val timeCycleInfo: List<TimeCycleData>? = null

.

...