Проверка 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");