2017-10-18 84 views
1

我的程序应该将XML文件格式转换为JSON文件格式。我试着去使用元帅的命令,但我得到的错误:在线程XML到Json with Camel

异常“主” org.apache.camel.FailedToCreateRouteException:无法在创建路线 ROUTE1:>>> 元帅[组织。 [email protected]] < < < in route:Route(route1)[[from [file:resource/inbox]] - > [Marshal [org.ap ...由于数据格式'xmljson'不能被 创建。确保数据的格式是有效的,并且相关联的骆驼 组分存在的类路径上

所致: java.lang.IllegalArgumentException异常:数据格式“xmljson”不能 创建。确保数据格式是有效的和相关的骆驼 组件存在在类路径中

Java代码

package route; 

import org.apache.camel.CamelContext; 
import org.apache.camel.builder.RouteBuilder; 
import org.apache.camel.impl.DefaultCamelContext; 
import org.apache.camel.model.dataformat.XmlJsonDataFormat; 
import org.apache.camel.spi.DataFormat; 
import org.apache.log4j.BasicConfigurator; 

public class CopyToJsonRoute { 

    public static void main(String args[]) throws Exception { 
     // Log 4j 
     BasicConfigurator.configure(); 

     // create CamelContext 
     CamelContext context = new DefaultCamelContext(); 

     // add our route to the CamelContext 
     context.addRoutes(new RouteBuilder() { 
      public void configure() { 
       // http://www.yr.no/place/Norway/Oslo/Oslo/Oslo/forecast.xml 

       XmlJsonDataFormat xmlJsonFormat = new XmlJsonDataFormat(); 
       xmlJsonFormat.setForceTopLevelObject(true); 
       from("file:resource/inbox") 
         .marshal(xmlJsonFormat) 
         .to("file:src/main/resources/data/output?autoCreate=true"); 



      } 
     }); 

     // start the route and let it do its work 
     context.start(); 
     Thread.sleep(10000); 

     // stop the CamelContext 
     context.stop(); 
    } 
} 

POM文件

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.yourdomain.subdomain</groupId> 
    <artifactId>copy-to-json</artifactId> 
    <version>1.0-SNAPSHOT</version> 


    <dependencies> 

     <!-- https://mvnrepository.com/artifact/org.apache.camel/camel-core --> 
     <dependency> 
      <groupId>org.apache.camel</groupId> 
      <artifactId>camel-core</artifactId> 
      <version>2.20.0</version> 
     </dependency> 

     <!-- https://mvnrepository.com/artifact/org.apache.camel/camel-jackson --> 
     <dependency> 
      <groupId>org.apache.camel</groupId> 
      <artifactId>camel-jackson</artifactId> 
      <version>2.20.0</version> 
     </dependency> 

     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      <version>1.8.0-alpha2</version> 
     </dependency> 

     <!-- https://mvnrepository.com/artifact/org.apache.camel/camel-jms --> 
     <dependency> 
      <groupId>org.apache.camel</groupId> 
      <artifactId>camel-jms</artifactId> 
      <version>2.20.0</version> 
     </dependency> 

     <!-- https://mvnrepository.com/artifact/xom/xom --> 
     <dependency> 
      <groupId>xom</groupId> 
      <artifactId>xom</artifactId> 
      <version>1.2.5</version> 
     </dependency> 



    </dependencies> 
</project> 

回答

2

您需要添加camel-xmljson作为您Maven pom文件中的依赖关系

<dependency> 
     <groupId>org.apache.camel</groupId> 
     <artifactId>camel-xmljson</artifactId> 
     <version>2.20.0</version> 
    </dependency>