Edit1
Я не уверен, что заголовок лучше всего подходит для этой проблемы, поэтому, если какой-либо из них имеет более округленный заголовок, предложите
Я пробую свои силы на верблюде, где мне нужно получить какой-нибудь CSV-файл из файловой системы, и мне нужно преобразовать его в формат XML и поместить в другую систему
Я использую верблюда для этого, и вот мой пример кода POC
import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;
import com.poc.convertor.CSVConverterBean;
public class TestPOC {
public static void main(String args[]) throws Exception {
CamelContext context = new DefaultCamelContext();
context.addRoutes(new RouteBuilder() {
public void configure() {
from("file:data/csv?noop=true").unmarshal().csv().bean(new CSVConverterBean(),"processCSVInvoice").to("file:data/csvoutput?fileName=test.xml").marshal("jaxb");
}
});
context.start();
Thread.sleep(1000);
context.stop();
}
}
При таком подходе верблюд csv unmarshaller преобразует файл csv в список java List<List<String>>
я написал java-конвертер CSVConverterBean
, который будет перебирать список и устанавливать значения в соответствующих java-объектах, генерируемых jaxb 2.x, конечный объект маршалируется в xml и файл сохраняется.
Все работает правильно только с одной проблемой, если в будущем возникнет какой-либо запрос на изменение сопоставления, нам нужно внести изменения в CSVConverterBean
, а затем этот Java-файл должен быть перекомпилирован и должен быть перераспределен, что мы хотим чтобы избежать.
мой вопрос: есть ли способ, которым мы можем сопоставить значения из списка java, предоставляемого Camel, с соответствующими классами java, сгенерированными JaxB, чтобы можно было избежать необходимости перекомпиляции кода java.