我正在使用
XML和JAXB,因为我将
XML解组和编组为
Java对象,反之亦然.现在我试图根据我们的schema(test.xsd)验证我们的XML.假设如果我的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? }
我将如何验证我的XML与test.xsd模式.我的test.xsd架构路径是 –
C:\workspace\one\two\three\src\main\java\com\package\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"));
解决方法
在您解除封锁之前,您只需要在Unmarshaller上设置一个
javax.xml.validation.Schema
的实例.您可以在Unmarshaller上指定ValidationEventHandler的实现,以捕获在解组过程中发生的任何问题.
了解更多信息
我在博客上写了更多的这个用例:
> http://blog.bdoughan.com/2010/12/jaxb-and-marshalunmarshal-schema.html