如何使用JAXB针对模式validationXML?

我正在使用XMLJAXB因为我正在解组并将XML编组为Java对象,反之亦然。 现在我试图根据我们的模式validation我们的XML(test.xsd)。 假设我的XML中缺少任何必需字段,那么我想知道在针对模式test.xsdvalidationXML之后缺少哪个字段。

 public void unmarshal(final InputStream is) { final XMLInputFactory factory = XMLInputFactory.newInstance(); final XMLStreamReader reader = factory.createXMLStreamReader(is); Object req = unmarshaller.unmarshal(reader); // how would I validate here? } 

我如何根据test.xsd架构validation我的XML。 我的test.xsd架构路径是 –

C:\工作空间\一个\ 2 \ 3 \ SRC \主\的java \ COM \包\ SERV \ AP \ VersionOne的\ test.xsd

更新:加载test.xsd为:

 Schema schema = factorySchema.newSchema(new File("C:\\workspace\\one\\two\\three\\src\\main\\java\\com\\package\\serv\\ap\\versionOne\\test.xsd")); 

在执行unmarshal之前,您只需要在Unmarshaller上设置javax.xml.validation.Schema的实例。 您可以在Unmarshaller上指定ValidationEventHandler的实现,以捕获在解组过程中发生的任何问题。

了解更多信息

我在博客上写了更多关于这个用例的文章: