Ich habe einige Klassen mit JAXB Annotationen, ich habe einige Instanzen erstellt und ich muss sie gegen meine XSD-Dateien validieren. Ich sollte in der Lage sein, Details darüber zu bekommen, was falsch ist, wenn die Objekte ungültig sind.Wie bekomme ich Fehlerdetails vom JAXB Validator?
Bisher hatte ich kein Glück, ich weiß über diese Klasse ValidationEventHandler, aber apperently kann ich es mit der Unmarshaller-Klasse verwenden, das Problem ist, dass ich die Objekte nicht das rohe XML validieren muss.
Ich habe diesen Code:
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);
Dieser Code funktioniert, wird es das Objekt validieren und eine Ausnahme mit der Meldung, so etwas wie diese werfen:
cvc-Muster-gültig: Value '12345678901' ist nicht facetten gültig bezüglich auf Muster '\ d {10} Typ 'id'.]
Das Problem ist, dass ich bestimmte brauchen Details, mit einer solchen Zeichenfolge müsste ich alle Nachrichten analysieren.
Eine mögliche Option besteht hier: http://stackoverflow.com/questions/11921190/how-to-get-the- element-of-invalid-xml-file-with-failed-xsd-validation –
Ein weiterer Gruss gefunden, der zeigt, wie man das eigentlich ungültige DOM-Element bekommt http://stackoverflow.com/questions/8077437/how-can- Ich-bekomme-mehr-Informationen-auf-a n-invalid-dom-element-durch-die-validator # antwort-8162185 –