Валидация XML против XSD с использованием Apache Camel - PullRequest
0 голосов
/ 23 марта 2020

Моя цель - прочитать файл 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");                
        }
});

Ошибка:

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

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

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

1 Ответ

0 голосов
/ 24 марта 2020

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

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"); 
...