Apache camel Talend ESB在路由中将xml转换为json

Apache camel Talend ESB在路由中将xml转换为json,apache-camel,esb,talend,eip,Apache Camel,Esb,Talend,Eip,有人知道如何在Talend ESB路由中将xml转换为json和json转换为xml吗? 当我在作业中收到rest消息时,我可以配置“消费”和“生产”,但如何在路由中实现这一点。我需要对rest消息进行一些中介,所以我必须使用Route(基于内容的路由),因为EIP在路由中 例如: RestEndpoint_IN->MessageRouter->ConvertXmlToJson->RestEndpoint_Out. 作为回应,我需要: RestEndpoint_Out->

有人知道如何在Talend ESB路由中将xml转换为json和json转换为xml吗? 当我在作业中收到rest消息时,我可以配置“消费”和“生产”,但如何在路由中实现这一点。我需要对rest消息进行一些中介,所以我必须使用Route(基于内容的路由),因为EIP在路由中

例如:

RestEndpoint_IN->MessageRouter->ConvertXmlToJson->RestEndpoint_Out.
作为回应,我需要:

RestEndpoint_Out->ConvertJsonToXml->RestEndpoint_IN

有一些java函数可以为您完成这项工作,只需在bean中编写代码并将其添加到路由中(或将调用它的cProcessor),只需使用“exchange.getIn().getBody(String.class)”获取消息内容,对其进行转换,然后使用“exchange.getIn().setBody()”设置结果

您可以使用xmljson驼峰组件来实现这一点

步骤:
  • 验证talend lib文件夹中是否有XOM库。(Talend ESB\Runtime\u ESBSE\lib)。 在当前的talend安装中,它似乎丢失了,您可以从这里获得它:(如果必须复制它,请重新启动talend)

  • 如果您还没有cConfig小部件,请在路由中添加一个。在基本设置->依赖项中添加xom库。现在,您可以只使用组件了;从这里往前走很直

  • 添加cMessagingEndpoint小部件

    • 在URI中,使用“dataformat:xmljson:unmarshal?”将json转换为xml。如果需要从xml转换为json,请使用“dataformat:xmljson:marshal?”
    • 在高级设置选项卡中,选择xmljson
  • 您可以将小部件重命名为类似“将正文转换为XML”的名称

说明: Talend论坛不是很有帮助。他们只是简单地提到了xmljson组件,但是如果您对camel没有很好的理解,这会让人非常困惑。 cMessagingEndpoint小部件只是在JavaDSL中转换为“.to()”方法。这里列出的camel组件:支持URI标识符。如您所见,我们使用了DataFormat URI表单,它允许使用驼峰核心封送和解组方法在格式之间进行转换。将xml转换为json最简单的方法是使用camel xmljson(),但它需要2个JAR,并且当前talend安装中缺少一个JAR(XOM),这就是为什么我们需要使用cConfig小部件添加依赖项