1

我的目标是读取 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");                
        }
});

错误:

线程“主”org.apache.camel.FailedToCreateRouteException 中的异常:无法在以下位置创建路由 route1:>>> To[validator:src/main/resources?fileName=SampleXMLStructure.xsd] <<< 在路由中:Route(route1) [来自[file:src/main/resources?fileName=data-sam... 因为无法解析端点:验证器://src/main/resources?fileName=SampleXMLStructure.xsd 由于:无法解析端点:验证器://src/main/resources?fileName=SampleXMLStructure.xsd 由于:无法在端点上设置 1 个参数。如果参数拼写正确并且它们是端点的属性,请检查 uri。未知参数=[{fileName=SampleXMLStructure.xsd}]

另外,如果 XML 对给定的 XSD 无效,我想配置是否发生一些异常。我们如何配置它?

请帮助。

4

1 回答 1

0

使用异常块尝试如下:

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"); 
于 2020-03-24T10:57:12.147 回答