2010-04-19 3 views

ответ

32

Эталонная реализация JAXB не использует этот атрибут для проверки, это чисто для целей документации.

Если вам необходимо проверить документы, вам необходимо определить схему XML и ввести ее в Marshaller или Unmarshaller, используя SchemaFactory.

+0

см. [This] (http://stackoverflow.com/a/2696765/12604) для примера загрузки 'Schema' из вашего' JAXBContext' для использования в 'Marshaller' /' Unmarshaller'. –

+0

Я бы не сказал, что это чисто для документирования - он также используется для генерации схемы. Когда вы создаете XSD из ваших классов Java, и у вас есть 'required = true', объявление элемента в XSD будет сгенерировано с помощью' minOccurs = "1" '. Затем вы можете использовать XSD для проверки XML. – Jesper

1

Кроме того, вы можете использовать beforeMarshal и afterUnmarshal метод для проверки входов в качестве билда в Marshaller и Unmarshaller.

Схема, в соответствии с которой эти методы доступны, также позволит вам добавить произвольное предложение throws к объявлению метода. Это означает, что при реализации этих методов вы можете безопасно использовать javax.xml.bind.MarshalException и javax.xml.bind.UnmarshalException(или какой-либо вид Exception) для проверки ошибок проверки.

Смежные вопросы