我需要骆驼根据XML文件的标记值过滤文件

时间:2018-11-27 18:46:16

标签: java apache-camel

我有一个标签为<ns:serviceName>的XML文件 仅当serviceName的值为“ enquiry”时,才应选择文件 我的代码目前是

from(file://path)
...
...


to(url)

1 个答案:

答案 0 :(得分:0)

您可以像这样过滤从检索到的文件中产生的消息:

Map<String, String> nsMap = new HashMap<String, String>();
nsMap.put( "ns", "http://myuri.com" );

from("file://path")
.filter().xpath("ns:serviceName eq 'enquiry'", nsMap )
.to(url);

但是,这将检索每个文件,并且仅处理您感兴趣的文件。

如果您要仅检索您要处理的文件,而让其他文件不处理,我想您将需要实现GenericFileFilter对象,并将其传递给Camel File2组件。 filter参数。这不是我尝试过的事情,并且我怀疑您最终将不得不读取和解析文件,过滤文件,然后在路由中再次读取和解析文件,这样效率不高。