#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