1

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

例子:

RestEndpoint_IN->MessageRouter->ConvertXmlToJson->RestEndpoint_Out.

作为回应,我需要:

RestEndpoint_Out->ConvertJsonToXml->RestEndpoint_IN
4

2 回答 2

2

您可以使用 xmljson 骆驼组件来执行此操作。

脚步:

  • 确认您的 talend lib 文件夹中有 XOM 库。(Talend ESB\Runtime_ESBSE\lib)。当前的 talend 安装中似乎缺少它,您可以从这里获取它:https ://mvnrepository.com/artifact/xom/xom/1.2.5(如果必须复制它,请重新启动 talend)

  • 如果您还没有 cConfig 小部件,请在您的路线中添加一个。在 Basic Settings->dependencies 添加 xom 库。现在您可以使用该组件了;从这里开始很简单。

  • 添加一个 cMessagingEndpoint 小部件。

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

解释:

Talend 论坛不是很有帮助。他们只是简单地提到了 xmljson 组件,但是如果你没有很好地掌握骆驼,那就很混乱了。cMessagingEndpoint 小部件简单地转换为 java dsl 中的“.to()”方法。此处列出的骆驼组件:http: //camel.apache.org/components.html支持 URI 标识符。如您所见,我们使用了 DataFormat URI 形式,它允许使用骆驼核心编组和解组方法在格式之间进行转换。将 xml 转换为 json 的最简单方法是使用 camel-xmljson ( http://camel.apache.org/xmljson.html ),但它需要 2 个 jars 并且当前 talend 安装中缺少其中一个 (XOM),这就是我们需要使用 cConfig 小部件添加依赖项的原因。

于 2017-04-06T07:23:10.357 回答
1

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

于 2017-02-24T14:53:08.047 回答