3

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 および variable で検証エラーを取得する最も簡単な方法が存在する可能性がありますか?

4

1 に答える 1

4

アプローチは、ValidationEventHandler検証イベントを処理する方法です。記述する必要のあるコードの量を最小限に抑えたい場合は、次のようなことができます。

    jaxbUnmarshaller.setEventHandler(new ValidationEventHandler() {

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

    });
于 2012-09-04T10:15:41.497 に答える