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