Я пытаюсь проанализировать файл XML, используя Джексона и Kotlin в Android Studio. В частности, я хочу запустить код из следующего тестового примера в jackson-module- kotlin:
https://github.com/FasterXML/jackson-module-kotlin/blob/master/src/test/kotlin/com/fasterxml/jackson/module/kotlin/test/github/Github153.kt
@JacksonXmlRootElement(localName = "MyPojo")
data class MyDataPojo (
@JacksonXmlElementWrapper(localName = "elements")
@JacksonXmlProperty(localName = "element")
val elements : List<MyDataElement>
)
data class MyDataElement (
@JacksonXmlProperty(localName = "value", isAttribute = true)
var value: String
)
I'm пытаюсь разобрать файл XML следующим образом:
val xmlMapper = XmlMapper().apply {
registerModule(KotlinModule())
}
val pojo = context.resources.assets.open(name).use { input ->
xmlMapper.readValue<MyDataPojo>(input)
}
Это происходит со следующим исключением:
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Invalid definition for property `elements` (of type `eu.tilk.wihajster.MyDataPojo`): Could not find creator property with name 'elements' (known Creator properties: [element])
Я использую Jackson 2.10.3, здесь мой раздел зависимостей из build.gradle:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.core:core-ktx:1.2.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.fasterxml.jackson.core:jackson-core:2.10.3'
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.10.3'
implementation 'com.fasterxml.jackson.core:jackson-databind:2.10.3'
implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.10.3'
implementation "com.fasterxml.jackson.module:jackson-module-kotlin:2.10.3"
implementation 'javax.xml.stream:stax-api:1.0-2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
Что я делаю не так? Этот код скопирован из теста для jackson-module- kotlin, поэтому я считаю, что он должен работать нормально.