使用ApacheCamel根据XSD验证XML

使用ApacheCamel根据XSD验证XML,xml,validation,xsd,apache-camel,xmlschema,Xml,Validation,Xsd,Apache Camel,Xmlschema,我的目标是读取CSV文件,将其转换为XML,并根据XSD对其进行验证。代码如下: CamelContext _ctx = new DefaultCamelContext(); _ctx.addRoutes(new RouteBuilder() { public void configure() throws Exception { from("file:src/main/resources?fileName=data-sample.cs

我的目标是读取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:未能创建路由 路由1位于:>>>
要[validator:src/main/resources?fileName=SampleXMLStructure.xsd]带有异常块,请尝试以下操作:

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

对于异常块,请尝试以下操作:

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

请参阅validator文档页面的底部,了解如何验证XML:示例是JAVA和XML DSL,而不是我所要的格式。请帮助我,因为我真的被困在这个问题上,无法前进。请集中精力。Ralf正确地向您提供了驼峰文档(而不是JAVA文档)的参考。在使用任何Camel组件之前,请阅读相关内容。若你们阅读了关于验证器组件的内容,你们会发现你们的例子是不正确的,这就是你们出错的原因。验证程序组件没有fileName属性,它是在异常中编写的。请参阅文档中的示例,正确配置并重试。这可能对您有所帮助。我刚刚将验证程序代码更改为:
.to(“validator:file:src/main/resources/SampleXMLStructure.xsd”)错误现在消失了。程序运行,但当XML未向XSD确认时,不会显示任何错误。我需要一些异常块来显示异常。请帮助我完成上面的代码。请参阅validator文档页面底部关于如何验证XML的内容:示例是JAVA和XML DSL,而不是我要找的格式。请帮助我,因为我真的被困在这个问题上,无法前进。请集中精力。Ralf正确地向您提供了驼峰文档(而不是JAVA文档)的参考。在使用任何Camel组件之前,请阅读相关内容。若你们阅读了关于验证器组件的内容,你们会发现你们的例子是不正确的,这就是你们出错的原因。验证程序组件没有fileName属性,它是在异常中编写的。请参阅文档中的示例,正确配置并重试。这可能对您有所帮助。我刚刚将验证程序代码更改为:
.to(“validator:file:src/main/resources/SampleXMLStructure.xsd”)错误现在消失了。程序运行,但当XML未向XSD确认时,不会显示任何错误。我需要一些异常块来显示异常。请帮助我上面的代码。我尝试了上面的代码,但仍然是一样的。。。当xml不符合XSD时,它不会记录任何错误:-(在验证之前尝试添加.setBody(常量(“123”))只是为了测试。它仍然没有错误吗?为什么使用“validator:file”?看看文档,它是“validator:somelocalorremotersource”:在执行“validator:somelocalorremotersource”即
。到(“validator:src/main/resources/SampleXMLStructure.xsd”)
它让我在URI的类路径中找不到resource:src/main/resources/SampleXMLStructure.xsd要将SampleXMLStructure.xsd移动到您的JAR,我尝试了上面的代码,但仍然是一样的…当xml与xsd不一致时,它不会记录任何错误。:-(Try add.setBody(常量(“123”))在验证之前只是为了测试。它仍然没有错误吗?为什么使用“validator:file”?看看文档,它是“validator:somelocalorremotersource”:在执行“validator:somelocalorremotersource”时,即
.to(“validator:src/main/resources/SampleXMLStructure.xsd”)
它让我无法在URI的类路径中找到resource:src/main/resources/SampleXMLStructure.xsd,请将SampleXMLStructure.xsd移动到jar