Как обрабатывать подчеркивания в тегах xml. Вот код, над которым я работаю. Он генерировал мне тег xml с двойным подчеркиванием ("__") вместо единственного подчеркивания ("_"). Может ли кто-нибудь помочь мне решить эту проблему.
ConverterRoute.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();
}
}
}
Test.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;
}
Source.txt
55158|11901|2346
55158|11101|3454
ВЫХОД
File.xml
<?xml version='1.0' encoding='UTF-8'?>
<TEST__INB>
<ALT__NUM>55158</ALT__NUM>
<PRTNUM>11901</PRTNUM>
<UOMCOD>2346</UOMCOD>
</TEST__INB>
Ожидаемый ВЫХОД
File.xml
<?xml version='1.0' encoding='UTF-8'?>
<TEST_INB>
<ALT_NUM>55158</ALT_NUM>
<PRTNUM>11901</PRTNUM>
<UOMCOD>2346</UOMCOD>
</TEST_INB>