如何使用 apache camel bindy 将两个 xml 标签合并为一个 xml
How to merge two xml tags into one xml using apache camel bindy
我的问题是我的平面文件中有两个不同的位置带有“|”分隔的字符串。位置 2 和 3 参考说明。我想生成 xml 两个描述附加到一个描述和 return 一个包含两个描述的 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);
}
}).
我不太了解 apache-camel
,不过你可以在 TEST
中有另一个 DataField
说 DESC
,你可以设置 DESC
而不是 Converter.java
中的 DESC_ONE
,在调用 exchange.getIn().setBody(descTwo);
之前,您应该将 DESC_ONE
和 DESC_TWO
设置为 null
.
我的问题是我的平面文件中有两个不同的位置带有“|”分隔的字符串。位置 2 和 3 参考说明。我想生成 xml 两个描述附加到一个描述和 return 一个包含两个描述的 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);
}
}).
我不太了解 apache-camel
,不过你可以在 TEST
中有另一个 DataField
说 DESC
,你可以设置 DESC
而不是 Converter.java
中的 DESC_ONE
,在调用 exchange.getIn().setBody(descTwo);
之前,您应该将 DESC_ONE
和 DESC_TWO
设置为 null
.