Mam kilka klas z adnotacjami JAXB, stworzyłem kilka wystąpień i muszę je zweryfikować w stosunku do moich plików XSD. Powinienem być w stanie uzyskać szczegółowe informacje o tym, co jest nie tak, gdy obiekty są nieważne.Jak uzyskać szczegółowe informacje o błędach z JAXB Validator?
Do tej pory nie miałem szczęścia, wiem o tej klasie ValidationEventHandler ale apperantly mogę go używać z klasą Unmarshaller, problem polega na tym, że muszę zweryfikować obiekty, a nie surowy XML.
mam ten kod:
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);
Ten kod będzie działał, to zatwierdzić obiekt, a wyjątek z komunikatem, coś takiego:
CVC-pattern-valid: wartość „12345678901” nie jest ważny aspekt, w odniesieniu do wzoru „\ D {10}” dla typu „ID”.]
problemem jest to, że muszą specyficzne szczegóły, z takim ciągiem, musiałbym przeanalizować wszystkie wiadomości.
Jedną z możliwych opcji istnieje tutaj: http://stackoverflow.com/questions/11921190/how-to-get-the- element-of-and-invalid-xml-file-with-failed-xsd-validation –
Znaleźliśmy kolejną awnser, która pokazuje, jak uzyskać aktualny nieprawidłowy element DOM http://stackoverflow.com/questions/8077437/how-can- i-get-more-information-on-a n-invalid-dom-element-through-the-validator # answer-8162185 –