2017-11-04 16 views
1

最初の検証エラーが発生したときにxsdに対してxmlを検証していますが、このアプローチでは、 XMLファイルを一度に実行できます。 XMLファイルに複数の検証エラーがある場合、最初の実行では、最初のエラーが発生するとすぐに例外がスローされ、残りのエラーについてはわかりません。後続のエラーについて知るには、以前のエラーを修正し、何も例外がスローされなくなるまでファイルを何度も検証する必要があります。XSDスキーマに対してXMLファイルを検証し、すべての検証エラーをリストする方法

onException(SchemaValidationException.class) 
    .handled(true) 
    .to("file:invalid-data") 

from("file:in-data?noop=true") 
    .to("validator:file:my.xsd") 
    .to("file:out-data"); 

答えて

0

どのApache Camelのバージョンをお使いですか? 2.20では、validation codeは検証した後、すべてのエラーを処理します:

try { 
    LOG.trace("Validating {}", source); 
    validator.validate(source, result); 
    handler.handleErrors(exchange, schema, result); 
} catch (SAXParseException e) { 
    throw new SchemaValidationException(exchange, schema, Collections.singletonList(e), Collections.<SAXParseException>emptyList(), Collections.<SAXParseException>emptyList()); 
} 

検証がjavax.xml.validation.Validatorクラスによって行われ、しかし。同様の議論があるthis questionを参照してください。ドキュメントに記載されているもの:

検証中に見つかったエラーは、指定されたErrorHandlerに送信されます。 文書が有効であるか、文書に何らかのエラーが含まれていても致命的ではなく、ErrorHandlerが例外をスローしなかった場合、このメソッドは正常に戻ります。

多分あなたが直面しているエラーは致命的ですか?そうだとすれば、それはキャメルのコンポーネントコントロールから外れていると思う。 :(

関連する問題