我想用JaXB验证xml文档。
代码:
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(new StreamSource(new File("D:/liferay-develop/workspace/cat_test/v2/STD_MP.xsd")));
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
jaxbUnmarshaller.setSchema(schema);
现在我希望如果文档不符合架构,则会出错。在示例中,可以看到有人为此创建了EventHandler类(如此http://blog.bdoughan.com/2010/12/jaxb-and-marshalunmarshal-schema.html)。但也许存在更简单的方法来获得conlose和变量中的验证错误?
答案 0 :(得分:4)
ValidationEventHandler
方法是如何处理验证事件的。如果您希望尽量减少需要编写的代码量,可以执行以下操作:
jaxbUnmarshaller.setEventHandler(new ValidationEventHandler() {
@Override
public boolean handleEvent(ValidationEvent event) {
System.out.println(event.getMessage());
return true;
}
});