有人知道如何在Talend ESB路由中将xml转换为json,将json转换为xml吗? 当我在Job中收到rest消息时,我可以配置“consume”和“produce”,但是如何在Route中执行此操作。我需要对休息信息进行一些调解,所以我必须使用Route(基于内容的路由),因为EIP在路由中。
示例:
RestEndpoint_IN->MessageRouter->ConvertXmlToJson->RestEndpoint_Out.
作为回应,我需要:
RestEndpoint_Out->ConvertJsonToXml->RestEndpoint_IN
答案 0 :(得分:2)
您可以使用xmljson camel组件来执行此操作。
确认您的talend lib文件夹中有XOM库。 (Talend ESB \ Runtime_ESBSE \ lib)。 在当前的talend安装中似乎缺少它,你可以从这里得到它:https://mvnrepository.com/artifact/xom/xom/1.2.5(如果你不得不复制它,重启talend)
在你的路线中添加一个cConfig小部件,如果你还没有。在基本设置 - >依赖项中添加xom库。现在您已准备好使用该组件;这是非常直接的。
添加cMessagingEndpoint小部件。
您可以将小部件重命名为"将正文转换为XML"。
Talend论坛不是很有帮助。他们只是提到了xmljson组件,但是如果你对骆驼没有很好的掌握,那就非常困惑了。 cMessagingEndpoint小部件只是转换为" .to()" java dsl中的方法。此处列出的驼峰组件:http://camel.apache.org/components.html支持URI标识符。如您所见,我们使用了DataFormat URI表单,该表单允许使用camel核心编组和解组方法在格式之间进行转换。将xml转换为json的最简单方法是使用camel-xmljson(http://camel.apache.org/xmljson.html),但它需要2个jar,其中一个(XOM)在当前的talend安装中缺失,这就是为什么我们需要添加依赖项使用cConfig小部件。
答案 1 :(得分:1)
有一些java函数可以帮你完成这些工作,juste在bean中编写你的代码并将它添加到你的路由中(或者一个将调用它的cProcessor),你必须得到消息内容&#34 ; exchange.getIn()。getBody(String.class)",转换它,然后用" exchange.getIn()。setBody()"
设置结果