Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
骆驼路由中的XML到JSON不起作用_Json_Xml_Apache Camel - Fatal编程技术网

骆驼路由中的XML到JSON不起作用

骆驼路由中的XML到JSON不起作用,json,xml,apache-camel,Json,Xml,Apache Camel,我试图使用camel路由器将XML消息转换为JSON,并将其保存到一个文件中。从源文件获取XML消息并将其保存到目标文件等都在工作。但是,当我尝试转换为JSON时,它不起作用。我甚至没有在日志中抛出任何错误/异常。我正在OSGI容器上运行 public class CamelRouter extends RouteBuilder { @Override public void configure() throws Exception { from("f

我试图使用camel路由器将XML消息转换为JSON,并将其保存到一个文件中。从源文件获取XML消息并将其保存到目标文件等都在工作。但是,当我尝试转换为JSON时,它不起作用。我甚至没有在日志中抛出任何错误/异常。我正在OSGI容器上运行

    public class CamelRouter extends RouteBuilder {

    @Override
    public void configure() throws Exception {
         from("file://C:/test/Sample.xml")
            .routeId("file-to-file")
               .log(LoggingLevel.INFO,"RouteID file-to-file !!!!! starting")                   
               //From XML to JSON
               .bean(CamelRouter.class, "convertXmlToJson")
               .log(LoggingLevel.INFO,"From XML to JSON !!!!! Done")
               .to("file://C:/test/JSONMessages")
               .log(LoggingLevel.INFO,"Converted Message Saved successfully");
将XML转换为JSON convertXmlToJson的bean方法如下所示

public String convertXmlToJson(String msg) {
        log.info("NOW calling JSON conversion");
        String jsonStr = null;
        log.info("MESSAGE conversion starting : ");  //After this message nothing happened
        XMLSerializer xmlReader =  new XMLSerializer();
        log.info("MESSAGE before conversion : " + msg);
        jsonStr = xmlReader.read(msg).toString();
        log.info("JSON data : " + jsonObj.toString());

        return jsonObj.toString();
    }
有人知道它为什么不执行XMLSerializer部分吗。我尝试了这种方法,因为camel xmljson的marshal().xmljson()调用也会给出相同的结果。在我的camel路由中调用xmljson()后,没有发生任何事情。 我检查的是:

  • camel xmljson功能已启动并在OSGI中运行
  • apachexmljson网站中提到的依赖项添加到我的pom文件、xom、camel XmlJSON等中

我有什么遗漏吗?请帮助

代码路由的问题在于,处理程序方法驻留在路由生成器类中,并且调用bean组件的方式会触发该路由生成器类的另一个实例化

就我个人而言,我会将
convertXmlToJson
移动到一个适当的实用程序类。这样可以减少route builder和bean组件中的问题组合,它们应该可以正常工作

或者,如果您像下面这样调用bean组件,您的路由可能会运行:

  .bean(this, "convertXmlToJson")

代码路由的问题在于,处理程序方法驻留在路由生成器类中,另外,调用bean组件的方式会触发该路由生成器类的另一个实例化

就我个人而言,我会将
convertXmlToJson
移动到一个适当的实用程序类。这样可以减少route builder和bean组件中的问题组合,它们应该可以正常工作

或者,如果您像下面这样调用bean组件,您的路由可能会运行:

  .bean(this, "convertXmlToJson")

您可以将JSON字符串传递给函数并使其在独立模式下转换为XML吗?我尝试将XML字符串转换为JSON,我可以将XML传递给此函数,它在独立模式下转换为JSON,没有任何问题。但在骆驼路由中不起作用。能否将JSON字符串传递给函数,并使其在独立模式下转换为XML?我尝试将XML字符串转换为JSON,并将XML传递给此函数,它在独立模式下转换为JSON,没有任何问题。但是在驼峰路由中不起作用。我尝试将转换方法移动到一个util类中,并像这样调用bean:
.bean(new ConversionUtil(),“convertXmlToJson”)
什么都没有发生。我的util类方法中是否需要@Handler注释?如果添加@Handler,可以删除“convertXmlToJson”。除此之外,它不是必需的,您的调用看起来也正确。我将XML转换为POJO,然后使用
marshal().json(JsonLibrary.Jackson)
转换为json。所以它是这样工作的。但是我想知道
marshal().xmljson()
是如何工作的。我尝试了Apache网站上的几乎所有说明,但都没有效果。还有什么其他的诀窍可以让它起作用吗?因此,我不必担心如何将XML转换成适当的POJO。我尝试将转换方法移动到一个util类中,并像这样调用bean:
.bean(new ConversionUtil(),“convertXmlToJson”)
什么也没有发生。我的util类方法中是否需要@Handler注释?如果添加@Handler,可以删除“convertXmlToJson”。除此之外,它不是必需的,您的调用看起来也正确。我将XML转换为POJO,然后使用
marshal().json(JsonLibrary.Jackson)
转换为json。所以它是这样工作的。但是我想知道
marshal().xmljson()
是如何工作的。我尝试了Apache网站上的几乎所有说明,但都没有效果。还有什么其他的诀窍可以让它起作用吗?因此,我不必担心将XML转换为适当的POJO。