Java 如何使用ApacheCamelBindy将两个xml标记合并为一个xml
我的问题是在平面文件中有两个不同的位置,用“|”分隔字符串。位置2和3参见说明。我想生成两个描述都附加到一个描述的xml,并返回一个带有两个描述的DESC标记 输入源:Java 如何使用ApacheCamelBindy将两个xml标记合并为一个xml,java,xml,apache-camel,camel-http,Java,Xml,Apache Camel,Camel Http,我的问题是在平面文件中有两个不同的位置,用“|”分隔字符串。位置2和3参见说明。我想生成两个描述都附加到一个描述的xml,并返回一个带有两个描述的DESC标记 输入源: UN|2.1 |AEROSOLS <TEST> <STATE>UN</STATE> <DESC>2.1 AEROSOLS</DESC> </TEST> <TEST> <STATE>UN</STATE>
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>
预期输出:
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>
Converter.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;
}
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);
}
}).
我对ApacheCamel不太了解,但是在调用
exchange.getIn().setBody(descTwo)之前,您可以在TEST
中设置另一个DataField
,比如DESC
,而不是在Converter.java
中设置DESC ONE
您应该将DESC\u ONE
和DESC\u TWO
设置为null
我对apche camel
知之甚少,但是您可以在测试中有另一个数据字段,比如DESC
,您可以在Converter.java
中设置DESC code>DESC ONE
,而不是DESC ONE
,调用exchange.getIn().setBody(descTwo)之前的进一步操作
您应该将DESC_ONE
和DESC_TWO
设置为null
@BHAWANISINGH。我根据您的建议进行了更改。效果很好。谢谢请将其更新为答案。