Я пытаюсь преобразовать строковые данные с разделителями трубы в XML с помощью Camel Bindy. Но он генерирует теги вместе с именем класса. Также я хотел бы добавить пространство имен к моим тегам.
Я пытался использовать процесс Camel для создания пользовательского тега, он не работает.
ConverterRoute.java
private static final String SOURCE_INPUT_PATH = "file://inbox?fileName=3000.txt";
private static final String SOURCE_OUTPUT_PATH = "file://outbox?fileName=itemfile.xml";
public void addRoutesToCamelContext(CamelContext context) throws Exception {
context.addRoutes(new RouteBuilder() {
public void configure() {
try {
DataFormat bindyFixed = new BindyCsvDataFormat(PartInboundIFD.class);
NameSpace nameSpace = new NameSpace("PART_INB_IFD","https://apache.org.com");
from(SOURCE_INPUT_PATH).
unmarshal(bindyFixed).
marshal().
xstream().
to(SOURCE_OUTPUT_PATH);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
Pojo.java
@CsvRecord(separator = "\\|",skipField = true)
public class Pojo {
@Link
private ControlSegment CONTROL_SEGMENT;
}
CamelComponent.java
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();
}
}
}
OUTPUT Result.xml
<list>
<com.abc.domain.Pojo>
<CONTROL__SEGMENT/>
<TRNNAM>PART_TRAN</TRNNAM>
<TRNVER>9.0</TRNVER>
</com.abc.domain.Pojo>
</list>
Выше размещен вывод данной трансформации. В первом тегеон печатает имя тега с полным пакетом и именем класса (например, com.abc.domain.Pojo). Также я пытаюсь сгенерировать пространство имен, которое не генерируется в моем выводе.