Настройка того, как JAXB отключает логическое значение

#java #jaxb #unmarshalling

#java #jaxb #отмена преобразования

Вопрос:

У меня есть несколько аннотированных компонентов JAXB, которые я использую для отмены преобразования некоторого XML.

У меня есть несколько атрибутов, помеченных @XmlAttribute с типом Boolean.

@XmlAttribute приватный логический атрибут someAttribute;

Я хотел бы настроить umarshalling для всех логических атрибутов таким образом, чтобы разрешались только точные значения «true» или «false» (например, «FALse», а не «wibble», что привело бы к сбою отключения).

Я бы предпочел избежать необходимости устанавливать @XmlJavaTypeAdapter для каждого логического атрибута, если это возможно. Есть ли какой-либо способ настроить, как JAXB отключает логические свойства?

Ответ №1:

Вы могли бы создать, Schema выражающее ваши ограничения, и присоединить это к Unmarshaller .

Комментарии:

1. 1 — Для получения дополнительной информации об этом подходе смотрите: bdoughan.blogspot.com/2010/12 /…

2. @Blaise Doughan — спасибо за пример кода, хороший пост в блоге

3. Я вроде как надеялся сгенерировать схему из аннотаций JAXB… у меня все наоборот?

4. и @flamingpenguin — Одна вещь, о которой я только что подумал, это то, что подход проверки допустит значения true и false, а также 1 и 0 для узлов типа xsd: boolean: w3.org/TR/xmlschema-2/#boolean