Talend ESB将xml转换为路径中的json

时间:2016-04-05 10:07:49

标签: apache-camel esb talend eip

有人知道如何在Talend ESB路由中将xml转换为json,将json转换为xml吗? 当我在Job中收到rest消息时,我可以配置“consume”和“produce”,但是如何在Route中执行此操作。我需要对休息信息进行一些调解,所以我必须使用Route(基于内容的路由),因为EIP在路由中。

示例:

RestEndpoint_IN->MessageRouter->ConvertXmlToJson->RestEndpoint_Out.

作为回应,我需要:

RestEndpoint_Out->ConvertJsonToXml->RestEndpoint_IN

2 个答案:

答案 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小部件。

    • 在URI中使用:" dataformat:xmljson:unmarshal?"从json转到xml。如果你需要从xml转到json,请使用" dataformat:xmljson:marshal?"
    • 在“高级设置”选项卡中,选择“xmljson”
  • 您可以将小部件重命名为"将正文转换为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()"

设置结果