2017-10-18 85 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>