java - 如何使用 apache camel bindy 将两个 xml 标签合并为一个 xml
问题描述
我的问题是我的平面文件中有两个不同的位置,带有“|” 分隔的字符串。位置 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>
测试.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;
}
转换器.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
,但是你可以有另一个DataField
inTEST
说DESC
,你可以设置DESC
而不是DESC_ONE
in Converter.java
,在调用之前exchange.getIn().setBody(descTwo);
你应该设置DESC_ONE
和DESC_TWO
to null
。
推荐阅读
- c# - NPGSQL 开始文本导入在较大的 CSV 文件上引发异常
- javascript - 使用 react-redux 时,prevProps 和 this.props 将始终在 componentDidUpdate 中返回相同的值
- mysql - MySQL - 多个并发更新
- c - 第 25 行中的运行时错误:字符 35:运行时错误:“struct HASH_TABLE”类型的空指针内的成员访问(solution.c)
- android - 如何在不使用库的情况下在状态、焦点和正常状态下应用自定义形状的 TextInputLayout
- python - 记录学生姓名的功能
- xcode - 图像作为图标外观
- c - 即使我包含 unistd.h 在内核代码中隐式声明 getpid
- amazon-web-services - 如何使用 Eclipse JEE 从我的 Web 应用程序登录到 AWS?
- java - Java - 解释对象文件