Ho alcune classi con annotazioni JAXB, ho creato alcune istanze e ho bisogno di convalidarle contro i miei file XSD. Dovrei essere in grado di ottenere i dettagli di ciò che è sbagliato quando gli oggetti non sono validi.Come ottenere i dettagli dell'errore dal validatore JAXB?
Finora non ho avuto fortuna, so di questa classe ValidationEventHandler ma in modo diffuso posso usarla con la classe Unmarshaller, il problema è che devo convalidare gli oggetti non il XML grezzo.
ho questo codice:
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);
Questo codice funzionerà, sarà convalidare l'oggetto e generare un'eccezione con il messaggio, qualcosa di simile:
CVC-modello-valida: valore '12345678901' non è sfaccettato valido rispetto al modello '\ d {10}' per il tipo 'id'.]
Il problema è che ho bisogno specifico dettagli, con una stringa del genere dovrei analizzare tutti i messaggi.
Una possibile opzione esiste qui: http://stackoverflow.com/questions/11921190/how-to-get-the- elemento-di-e-invalid-xml-file-with-failed-xsd-validation –
Trovato un altro awnser che mostra come ottenere l'effettivo elemento DOM non valido http://stackoverflow.com/questions/8077437/how-can- i-get-more-informazioni-on-a n-invalid-dom-element-through-the-validator # answer-8162185 –