使用JaXB进行最简单的验证

时间:2012-09-04 07:48:56

标签: java xml validation jaxb

我想用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和变量中的验证错误?

1 个答案:

答案 0 :(得分:4)

ValidationEventHandler方法是如何处理验证事件的。如果您希望尽量减少需要编写的代码量,可以执行以下操作:

    jaxbUnmarshaller.setEventHandler(new ValidationEventHandler() {

        @Override
        public boolean handleEvent(ValidationEvent event) {
            System.out.println(event.getMessage());
            return true;
        }

    });