我有一些JAXB註釋類,我創建了一些實例,我需要驗證他們對我的XSD文件。當對象無效時,我應該能夠獲得有關錯誤的詳細信息。如何從JAXB Validator獲取錯誤細節?
到目前爲止,我還沒有運氣,我知道這個類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圖案有效:值「12345678901」不是小面有效的相對於 到圖案「\ d {10}」類型的「id」。]
的問題是,我需要特定細節,像這樣的字符串,我將不得不解析所有的消息。
一個可能的選項存在這裏:http://stackoverflow.com/questions/11921190/how-to-get-the-元素和無效的xml文件與失敗xsd驗證 –
發現另一個awnser,告訴你如何得到實際無效的DOM元素http://stackoverflow.com/questions/8077437/how-can- I-GET-更多的信息上,一n-invalid-dom-element-through-validator#answer-8162185 –