Невозможно размонтировать коллекцию объектов xml с использованием JAXB и Kotlin

Я пытаюсь deserialize / unmarshal XML, который содержит коллекцию элементов Person, завернутых в тег People. Я пытаюсь десериализовать этот XML в Kotlin, используя JAXB. Все компилируется и запускается без ошибок, но коллекция людей в моем классе всегда пуста. Как я могу развязать эту коллекцию?

import java.io.StringReader import javax.xml.bind.JAXB import javax.xml.bind.annotation.XmlAccessType import javax.xml.bind.annotation.XmlAccessorType import javax.xml.bind.annotation.XmlElement import javax.xml.bind.annotation.XmlElementWrapper @XmlAccessorType(XmlAccessType.FIELD) data class Person( var name:String = "", var age:Int = 0 ) @XmlAccessorType(XmlAccessType.FIELD) data class Report( var statusCode:Int = 0, @XmlElementWrapper(name = "people") @XmlElement(name = "person") var people:List<Person>? = null ) val xml = """ <report> <statusCode>3</statusCode> <people> <person> <name>Bob</name> <age>30</age> </person> <person> <name>Alice</name> <age>40</age> </person> </people> </report> """ fun main(args: Array<String>) { val report = JAXB.unmarshal(StringReader(xml), Report::class.java) println(report) // Report(statusCode=3, people=[]) } 

Это связано с тем, что вы определили XmlAccessType как FIELD , поэтому вы должны использовать цель сайта, чтобы аннотировать аннотацию в field поддержки, например:

 // v--- annotated on field rather than getter/setter/params @field:[XmlElementWrapper(name = "people") XmlElement(name = "person")] var people: List<Person>? = null 
Intereting Posts
Преобразование моего существующего проекта студии andorid в kotlin? Android DataBinding: @BindingAdapter в Kotlin не распознает lambdas Kotlin: закрытые и закрытые классы Как выбрать, какая перегрузка Java переопределить в производном классе Kotlin? Не удалось найти org.jetbrains.kotlinx: kotlinx-html: 0.6.4 Исключение Kapt при создании файла XML Google Assistant SDK отказывается от аутентифицированного канала как «НЕОПРЕДЕЛЕННЫЙ» Как улучшить синтаксис лямбда kotlin? котлинское деление нулевых аргументов Android – ViewDataBinding.inflate не раздувает вложенное пользовательское представление Kotlin JSR-223 ScriptEngineFactory в толстой банке – Не удается найти компилятор kotlin компилятора Получение абсолютного пути к файлу из содержимого URI для найденных изображений Видимость конструктора ограничена файлом Ожидаемый однобоковый бит, но найден 3: objectMapper, halObjectMapper, _halObjectMapper в junitTest Вызов метода java varargs из котлина