如何使用JAXB针对模式验证XML?

AKI*_*WEB 14 java xml xsd jaxb unmarshalling

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

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?
}
Run Code Online (Sandbox Code Playgroud)

我如何根据test.xsd架构验证我的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"));
Run Code Online (Sandbox Code Playgroud)

bdo*_*han 21

你只需要设置的实例,javax.xml.validation.SchemaUnmarshaller你做的解组之前.您可以指定的实现ValidationEventHandlerUnmarshaller赶在解组过程中出现的任何问题.

欲获得更多信息

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