Как получить информацию об ошибке из JAXB Validator?

У меня есть несколько классов с аннотациями JAXB, я создал несколько экземпляров, и мне нужно проверить их на соответствие моим файлам XSD. Я должен иметь возможность получить подробную информацию о том, что не так, когда объекты недействительны.

До сих пор мне не везло, я знаю об этом классе ValidationEventHandler, но, по-видимому, я могу использовать его с классом Unmarshaller, проблема в том, что я должен проверять объекты, а не необработанный XML.

У меня есть этот код:

MyClass myObject = new MyClass();
JAXBContext jaxbContext = JAXBContext.newInstance("x.y.z");
JAXBSource jaxbSource = new JAXBSource(jaxbContext, myObject);
SchemaFactory factory = SchemaFactory
                .newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Source schemaFile = new StreamSource(getClass().getClassLoader()
                .getResourceAsStream("mySchema.xsd"));
Schema schema = factory.newSchema(schemaFile);

Validator validator = schema.newValidator();

validator.validate(jaxbSource);

Этот код будет работать, он проверит объект и выдаст исключение с сообщением, что-то вроде этого:

cvc-pattern-valid: значение '12345678901' не является действительный с уважением в шаблон '\d{10}' для типа 'id'.]

Проблема в том, что мне нужны конкретные детали, с такой строкой мне пришлось бы анализировать все сообщения.

6
задан Rodrigo 18 June 2012 в 04:31
поделиться