JAXB всегда игнорирует "дополнительные" элементы, не указанные в @XmlType/propOrder? - программирование
Подтвердить что ты не робот

JAXB всегда игнорирует "дополнительные" элементы, не указанные в @XmlType/propOrder?

Если у меня есть класс, аннотированный с помощью

@XmlType(name = "someDTO", propOrder = { "firstField", "secondField", })

но XML (из ответа SOAP, скажем) выглядит как

<return><firstField>a</firstField><secondField>b</secondField><thirdField>c</thirdField></return>

Мой объект по-прежнему будет иметь значение firstField и secondField, а thirdField игнорируется.

Почему это? Будет ли это всегда так? Есть ли способ предотвратить создание объекта, если присутствуют дополнительные поля?

4b9b3361

Ответ 1

Некоторые JAXB (JSR-222) будут жаловаться, если есть свойства, сопоставленные с элементами XML, которые не являются включен в propOrder. propOder on @XmlType не используется для контроля того, какие элементы включены/исключены.

Опции для исключения свойств

  • Если вы хотите исключить менее половины свойств, я бы предложил указать те, которые вы хотите исключить, с помощью @XmlTransient.
  • Если вы хотите исключить более половины свойств, я бы предложил использовать @XmlAccessorType(XmlAccessType.NONE) и аннотировать свойства, которые вы хотите включить.

Дополнительная информация