Проверка JAXB с помощью аннотаций

Если у меня есть простой класс, такой как:-

@XmlRootElement
public class MyClass
{
   @XmlAttribute(required=true)
   private String myattribute
}

Действительно ли возможно проверить соответствующий xml документ БЕЗ схемы XML т.е. использования только аннотаций?

27
задан Martin 2 March 2010 в 18:28
поделиться

1 ответ

Хороший вопрос. Насколько мне известно, атрибут required генерируется XJC, когда он находит необязательный тип схемы, и я думаю, что он также используется генератором схемы. Однако во время выполнения он ни для чего не используется, не служа никакой другой цели, кроме документальной аннотации.

Одна вещь, которую вы могли бы рассмотреть, - это параметры обратного вызова среды выполнения JAXB . В этом случае вы можете просто определить метод afterUnmarshal () в MyClass , который программно проверяет состояние объекта, генерируя исключение, если оно ему не нравится. См. Ссылку выше, чтобы узнать о других вариантах, включая регистрацию отдельных классов валидаторов.

Сказав это, проверка по схеме действительно лучший способ. Если у вас его нет, подумайте о его написании.Инструмент schemagen может сгенерировать схему из вашей объектной модели, которую вы затем можете изменить, чтобы добавить любые ограничения, которые вам нравятся. Надеюсь, что schemagen сгенерирует обязательные элементы схемы из полей вашего класса required = true .

15
ответ дан 28 November 2019 в 05:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: