2017-11-04 3 views
1

첫 번째 유효성 검사 오류가 발생할 때 xsd에 대해 xml 유효성을 검사하는 중입니다. 그러나이 방법을 통해 첫 번째 유효성 검사 오류에 대한 정보를 얻을 수 없습니다. XML 파일을 한 번에 실행합니다. XML 파일에 여러 개의 유효성 검사 오류가있는 경우 처음 실행하면 첫 번째 오류가 발생하자마자 예외가 발생하고 나머지 오류는 알 수 없습니다. 후속 오류에 대해 알아 보려면 이전 오류를 수정하고 예외가 throw되지 않을 때까지 파일의 유효성을 다시 확인해야합니다.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가 예외를 throw하지 않은 경우이 메서드는 정상적으로 반환됩니다.

아마도 당신이 겪고있는 오류는 치명적일 수 있습니까? 그렇다면 카멜의 구성 요소 통제에서 벗어난 것 같습니다. :(

관련 문제