如何处理 xml 标签中的下划线。这是我正在工作的代码。它正在为我生成带有双下划线(“__”)而不是单下划线(“_”)的 xml 标记。谁能帮我克服这个问题。
转换器路由.Java
public class ConverterRoute implements RoutesBuilder {
private static final String SOURCE_INPUT_PATH = "file://inbox?fileName=Source.txt";
private static final String SOURCE_OUTPUT_PATH = "file://outbox?fileName=file_$simple{date:now:yyyyMMddHHmmssSSS}.xml";
public void addRoutesToCamelContext(CamelContext context) throws Exception {
context.addRoutes(new RouteBuilder() {
public void configure() {
try {
DataFormat bindyFixed = new BindyCsvDataFormat(Test.class);
XStreamDataFormat xStreamDataFormat = new XStreamDataFormat();
xStreamDataFormat.setAliases(Collections.singletonMap("TEST_INB",Test.class.getCanonicalName()));
from(SOURCE_INPUT_PATH).
split().tokenize(System.lineSeparator()).
unmarshal(bindyFixed).
marshal(xStreamDataFormat).
to(SOURCE_OUTPUT_PATH).log("Finished Transformation").end();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
CamelConfig.java
@Component
public class CamelConfig extends RouteBuilder {
@Override
public void configure() throws Exception {
try {
CamelContext context = new DefaultCamelContext();
ConverterRoute route = new ConverterRoute();
route.addRoutesToCamelContext(context);
context.start();
Thread.sleep(5000);
context.stop();
} catch (Exception exe) {
exe.printStackTrace();
}
}
}
测试.java
@CsvRecord(separator = "\\|",skipField = true,name = "TEST_INB")
public class Test {
@DataField(pos = 1,name = "ALT_NUM")
private BigDecimal ALT_NUM;
@DataField(pos = 2,name = "PRTNUM")
private BigDecimal PRTNUM;
@DataField(pos = 3,name = "UOMCOD")
private Integer UOMCOD;
}
来源.txt
55158|11901|2346
55158|11101|3454
输出
文件.xml
<?xml version='1.0' encoding='UTF-8'?>
<TEST__INB>
<ALT__NUM>55158</ALT__NUM>
<PRTNUM>11901</PRTNUM>
<UOMCOD>2346</UOMCOD>
</TEST__INB>
预期输出
文件.xml
<?xml version='1.0' encoding='UTF-8'?>
<TEST_INB>
<ALT_NUM>55158</ALT_NUM>
<PRTNUM>11901</PRTNUM>
<UOMCOD>2346</UOMCOD>
</TEST_INB>