【问题标题】:Converting CSV file to xml file using apache camel : XML File is not being created使用 apache camel 将 CSV 文件转换为 xml 文件:未创建 XML 文件
【发布时间】:2016-03-30 07:40:32
【问题描述】:
public class ConverterRoute implements RoutesBuilder {

    public void addRoutesToCamelContext(CamelContext context) throws Exception {
        Tracer tracer = new Tracer();
        tracer.setTraceOutExchanges(true);

        // we configure the default trace formatter where we can
        // specify which fields we want in the output
        DefaultTraceFormatter formatter = new DefaultTraceFormatter();
        formatter.setShowOutBody(true);
        formatter.setShowOutBodyType(true);

        // set to use our formatter
        tracer.setFormatter(formatter);

        context.addInterceptStrategy(tracer);
        context.addRoutes(new RouteBuilder() {

            public void configure() {


                try {
                    DataFormat bindy = new BindyCsvDataFormat(com.dto.EmployeeDTO.class);
                          from("file://TEST?fileName=Employee.csv").
                          unmarshal(bindy).
                          marshal().
                          xstream().
                          to("file://TESTOUT?fileName=EmployeeXML.xml");
                    /*DataFormat bindy = new BindyCsvDataFormat(com.dto.EmployeeDTO.class);
                      from("F://Employee.csv").
                      unmarshal(bindy).
                      marshal().
                      xstream().
                      to("F://EmployeeXML.xml");*/
                    } catch (Exception e) {
                                e.printStackTrace();
                }

            }
        });
    }

    public static void main(String[] args) {
        try{
            CamelContext context = new DefaultCamelContext();
            ConverterRoute route = new ConverterRoute();
            System.out.println("Starting........");
            route.addRoutesToCamelContext(context);
            context.start();
            Thread.sleep(5000);
            System.out.println("Ending........");
            context.stop();
        }catch(Exception exe){
            exe.printStackTrace();
        }
    }


    @XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@CsvRecord(separator = ",", skipFirstLine = true)
public class EmployeeDTO implements Serializable{
@XmlAttribute
      @DataField(pos = 1)
      private int employeeId;
      @XmlAttribute
      @DataField(pos = 2)
      private String firstName;
      @XmlAttribute
      @DataField(pos = 3)
      private String lastName;
      @XmlAttribute
      @DataField(pos = 4)
      private String role;
}

我收到以下错误:

开始........
log4j:WARN 找不到记录器 (org.apache.camel.impl.DefaultCamelContext) 的附加程序。 log4j:WARN 请正确初始化log4j系统。
结束…………

转换后的 xml 未在期望文件夹中生成。

【问题讨论】:

    标签: xml apache csv apache-camel


    【解决方案1】:

    首先,警告表示类路径中不存在 log4j 配置文件。尝试在资源目录中添加一个名为“log4j.properties”的文件,内容如下:

    log4j.rootLogger=INFO, out
    # uncomment the following line to turn on Camel debugging
    log4j.logger.org.apache.camel=INFO
    log4j.logger.org.apache.camel.component.mongodb=DEBUG
    log4j.logger.org.springframework=WARN
    log4j.appender.out=org.apache.log4j.ConsoleAppender
    log4j.appender.out.layout=org.apache.log4j.PatternLayout
    log4j.appender.out.layout.ConversionPattern=[%30.30t] %-30.30c{1} %-5p %m%n
    

    通过上述操作,您将在 IDE 中获取日志并查看发生了什么。

    最后,您可以使用 JAXB 代替 XTREAM。您唯一需要做的就是使用 JAXB 注释对 EmployeeDTO 进行注释。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-20
      • 2016-07-21
      • 2016-01-07
      • 1970-01-01
      • 2020-03-21
      • 2011-03-05
      • 2015-10-28
      • 2014-11-22
      相关资源
      最近更新 更多