Apache Camel 的 ${file:ext} 会拾取第一个点之后的所有内容,而不是仅拾取扩展名

问题描述 投票:0回答:2

正如标题所说,我正在尝试使用Camel的文件语言获取文件扩展名来指定正确的路线。

choice().
   when().simple("${file:ext} in 'xml'").
      unmarshal(coreIt("jaxb[Core]")).
      beanRef(connectorName()+coreIt("[Core]ImportConnector"), "processXml").
   when().simple("${file:ext} in 'zip,7z'").
      beanRef(connectorName()+coreIt("[Core]ImportConnector"), "extractZip").
endChoice();

问题是,客户向我们提供了 xml 文件,文件名中有日期,用点分隔。由于某种原因,骆驼将第一个点之后的所有内容视为扩展。如果我这样做:

when().simple("${file:ext} in '09.16.xml'").

它有效...

除了创建单独的文件夹来导入 xml 文件之外,还有其他解决方案或解决方法吗?感谢您的宝贵时间。

java apache-camel file-extension
2个回答
2
投票

这很困难,因为某些文件的扩展名可能有点,例如“.tar.gz”等。因此,理想情况下,他们不应在文件名中使用点。要解决此问题,您需要使用其他一些简单的表达式来检查此问题。您可以使用结尾

${file:name} ends with 'xml'

然后你可以使用or:

${file:name} ends with 'zip' || ${file:name} ends with '7z'

查看更多详细信息:http://camel.apache.org/simple


0
投票
© www.soinside.com 2019 - 2024. All rights reserved.