我试图制作一个从第三方网站获取xml-rpc数据的骆驼路线。问题是某些值是NIL。有没有办法配置路由接受这样的值?
网站:https://i.ifne.eu/om3-dev/ca/xml-rpc/get-upcoming-events-compact
在最糟糕的情况下,我可以预先处理它并替换所有NIL,但我想知道是否有一些简单的解决方案
编辑:添加示例路线
<route>
<from uri="timer://mainTimer?period=5000"/>
<to uri="xmlrpc:https://i.ifne.eu/om3-dev/ca/xml-rpc/get-upcoming-events-compact?defaultMethodName=test" />
<to uri="mock:result" />
</route>
此外,我尝试使用XmlRpcClientConfigurer,但没有运气 - 我是一个java noob所以不知道我是否正确行事
public class xmlrpcConfigurer implements XmlRpcClientConfigurer {
@Override
public void configureXmlRpcClient(XmlRpcClient client) {
XmlRpcClientConfigImpl clientConfig = (XmlRpcClientConfigImpl)client.getClientConfig();
clientConfig.setEnabledForExtensions(true);
}
}
背后的想法是,根据http://en.wikipedia.org/wiki/XML-RPC nil标签是一个扩展,我真的不知道它是否符合我的想法......
答案 0 :(得分:0)
嗯我无法找到解决方案所以我必须以另一种方式解决它 - 我删除了nil
元素
<dataFormats>
<xmlrpc id="xmlrpcResponse" request="false"/>
</dataFormats>
<route>
<from uri="timer://mainTimer?period=60000"/>
<to uri="https://i.ifne.eu/om3-dev/ca/xml-rpc/get-upcoming-events-compact?defaultMethodName=test" />
<process ref="removeNilFromXml"/>
<unmarshal ref="xmlrpcResponse"/>
<to uri="mock:result" />
</route>
removeNilFromXml.java:
public class removeNilFromXml implements Processor {
public void process(Exchange exchange) throws Exception {
String data = exchange.getIn().getBody(String.class);
String nonildata = data.replace("<nil/>", "");
exchange.getIn().setBody(nonildata);
}
}
不是最好的解决方案,但它有效......