【问题标题】:Talend ESB convert xml to json in routeTalend ESB 在路由中将 xml 转换为 json
【发布时间】:2016-04-05 10:07:49
【问题描述】:

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

例子:

RestEndpoint_IN->MessageRouter->ConvertXmlToJson->RestEndpoint_Out.

作为回应,我需要:

RestEndpoint_Out->ConvertJsonToXml->RestEndpoint_IN

【问题讨论】:

    标签: apache-camel esb talend eip


    【解决方案1】:

    您可以使用 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 个 jar,而当前 talend 安装中缺少其中一个 (XOM),这就是为什么我们需要使用cConfig 小部件。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多