【问题标题】:How to merge two xml tags into one xml using apache camel bindy如何使用 apache camel bindy 将两个 xml 标签合并为一个 xml
【发布时间】:2020-01-03 02:53:51
【问题描述】:

我的问题是我的平面文件中有两个不同的位置,带有“|”分隔的字符串。位置 2 和 3 参见说明。我想生成将两个描述附加到一个描述的 xml,并返回一个包含两个描述的 DESC 标记。

输入源:

UN|2.1  |AEROSOLS

预期输出:

<TEST>
<STATE>UN</STATE>
<DESC>2.1 AEROSOLS</DESC>
</TEST>

我得到的输出:

    <TEST>
    <STATE>UN</STATE>
    <DESC_ONE>2.1 AEROSOLS</DESC_ONE>
    <DESC_TWO>AEROSOLS<DESC_TWO>
    </TEST>

TEST.java

@Data
public class TEST {


    @DataField(pos = 1, name = "STATE", required = true)
    private String STATE;

    @DataField(pos = 2, name = "DESC",required = true)
    private String DESC_ONE;

    @DataField(pos = 3, name = "DESC",required = true)
    private String DESC_TWO;


}

Converter.java

                            from(SOURCE_INPUT_PATH).
                            log("Received input from file and body is ${body}").
                            unmarshal(bindyBeanConfig.bindyCsvDataFormat3280()).
                            process(new Processor()  {
                                @Override
                                public void process(Exchange exchange) throws Exception {

                                    TEST test = exchange.getIn().getBody(TEST.class);
                                    DESC_ONE descOne = test.getTEST();
                                    DESC_TWO descTwo = descOne.getDESC_ONE();

                                    String description = descOne.getDESC_ONE() + descTwo.getDESC_TWO();

                                    descOne.set_DESCONE(description);

                                    exchange.getIn().setBody(descTwo);

                                }
                            }).

【问题讨论】:

  • 我对 apche-camel 了解不多,但是您可以在 TEST 中拥有另一个 DataField 说 DESC ,并且您可以在 Converter.java 中设置 DESC 而不是 DESC_ONE ,在调用exchange.getIn().setBody(descTwo); 之前,您应该将DESC_ONEDESC_TWO 设置为null
  • @BHAWANISINGH 我根据您的建议进行了更改。它奏效了。谢谢!!
  • 已将其更新为答案。

标签: java xml apache-camel camel-http


【解决方案1】:

我对 apache-camel 了解不多,但是您可以在 TEST 中设置另一个 DataFieldDESC ,并且您可以在 Converter.java 中设置 DESC 而不是 DESC_ONE ,更早调用exchange.getIn().setBody(descTwo); 你应该将DESC_ONEDESC_TWO 设置为null

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    相关资源
    最近更新 更多