Проверка XML на XSD с помощью Apache Camel

Моя цель - прочитать файл CSV, преобразовать его в XML и проверить на соответствие XSD. Ниже приведен код:

    CamelContext _ctx = new DefaultCamelContext(); 
    _ctx.addRoutes(new RouteBuilder() {

        public void configure() throws Exception {
            from("file:src/main/resources?fileName=data-sample.csv")
            .process(new MyTransformValidator())
            .to("file:src/main/resources/?fileName=emp.xml")
            .to("validator:src/main/resources?fileName=SampleXMLStructure.xsd");                
        }
});

Ошибка:

Исключение в потоке "main" org.apache.camel.FailedToCreateRouteException: не удалось создать маршрут route1 в: >>> К [валидатору:src/main/resources? FileName=SampleXMLStructure.xsd] <<< в маршруте: Route(route1)[Из [file:src/main/resources? FileName=data-sam... из-за Не удалось разрешить конечную точку: validator://src/main/resources? FileName=SampleXMLStructure.xsd из-за: Не удалось разрешить конечную точку: валидатор://src/main/resources?fileName=SampleXMLStructure.xsd из-за: Есть 1 параметр, который не может быть установлен на конечной точке. Проверьте uri, правильно ли написаны параметры и являются ли они свойствами конечной точки. Неизвестные параметры =[{fileName=SampleXMLStructure.xsd}]

Кроме того, я хотел бы настроить, возникает ли какое-либо исключение, если XML недействителен для данного XSD. Как это настроить?

Пожалуйста, помогите.

1 ответ

С блоком исключений попробуйте так:

from("file:src/main/resources?fileName=data-sample.csv")
            .process(new MyTransformValidator())
            .to("file:src/main/resources/?fileName=emp.xml")
            .doTry()
            .to("validator:file:src/main/resources/SampleXMLStructure.xsd")
            .doCatch(Exception.class)
            .log(LoggingLevel.WARN, "Failed validation cause:${exchangeProperty.CamelExceptionCaught}")
            .process(exchange -> {
                Throwable exception = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Throwable.class);
                // process exception
            })
            .end()
            .log(LoggingLevel.INFO, "Finished processing file"); 
Другие вопросы по тегам