Джексон XML не может правильно десериализовать XmlElements из ДжакартыJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Джексон XML не может правильно десериализовать XmlElements из Джакарты

Сообщение Anonymous »

Я пытаюсь использовать Jackson XML для десериализации в Джакарте, но для xmlElements это не работает и приводит к нулевому объекту. Все остальные обычные поля, содержащие только XmlElement, десериализуются правильно. Следующий код — это то, что у меня есть для моего класса Java:

Код: Выделить всё

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"posinfo"
})
@XmlRootElement(name = "PUSH")
public class PUSH {

@XmlElement(name = "posinfo")
protected List
 posinfo;

.....
}

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "posinfoType", propOrder = {
"delayAndINITAndARRIVAL",
"delimiterAndAny"
})
public class PosinfoType {

@XmlElements({
@XmlElement(name = "DELAY", type = DELAYType.class),
@XmlElement(name = "INIT", type = INITType.class),
@XmlElement(name = "ARRIVAL", type = ARRIVALType.class),
@XmlElement(name = "ONSTOP", type = ONSTOPType.class),
@XmlElement(name = "DEPARTURE", type = DEPARTUREType.class),
@XmlElement(name = "ONROUTE", type = ONROUTEType.class),
@XmlElement(name = "ONPATH", type = ONPATHType.class),
@XmlElement(name = "OFFROUTE", type = OFFROUTEType.class),
@XmlElement(name = "END", type = ENDType.class)
})
protected List delayAndINITAndARRIVAL;
@XmlElementRef(name = "delimiter", namespace = "http://example.com/tmi8/core", type = Delimiter.class, required = false)
@XmlAnyElement(lax = true)
protected List delimiterAndAny;

.....
}
С помощью этого XML-кода, который я пытаюсь проанализировать:

Код: Выделить всё


2024-05-14T16:18:14+00:00
VEHICLE


2024-05-14T16:18:14+00:00
VEHICLE


2024-05-14T16:18:16+00:00
VEHICLE


С этой конфигурацией XML:

Код: Выделить всё

object JacksonJaxbUtils {
val objectMapperXml: ObjectMapper = XmlMapper.builder().apply {
defaultUseWrapper(false)

enable(ToXmlGenerator.Feature.WRITE_XML_DECLARATION)

addModule(JakartaXmlBindAnnotationModule())

disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE)
disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
serializationInclusion(JsonInclude.Include.NON_EMPTY)
addModule(
JavaTimeModule().apply {
addSerializer(XMLGregorianCalendar::class.java, XMLGregorianCalendarSerializer())
}
)
}.build()

class XMLGregorianCalendarSerializer : JsonSerializer() {
override fun serialize(value: XMLGregorianCalendar, generator: JsonGenerator, provider: SerializerProvider) {
generator.writeString(value.toXMLFormat())
}
}
}
Что я упускаю/делаю неправильно, чтобы в результате получился нулевой результат, а не список элементов?

Подробнее здесь: https://stackoverflow.com/questions/784 ... om-jakarta
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»