我已经登录了一段时间,但是因为很多配置文件都是xml格式的,所以很难找到我的问题的答案。
我想做什么?使用caml路由,我想读取一个xml文件并将其放入POJO中。在这里,我想分析一下它。最后,我想将一个不同的xml文件(POJO)作为答案写入out文件夹。
我的问题是,我不知道如何告诉camel将xml文件体解析到我的POJO中。
下面是我之前所做的一个简短的例子:
我的骆驼路线:
from("file:data/in")
.marshal().xstream()
.bean(XmlToBeanAndBackBean.class)
.unmarshal().xstream()
.to("file:data/out");我的POJO:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class XmlFilePojo {
@XmlAnyAttribute
private String name;
@XmlElement(name = "the_age")
private int theAge;
public void setName(String name) {
this.name = name;
}
}以及在驼峰路由中使用的my Bean:
@Component
public class XmlToBeanAndBackBean {
public XmlFilePojo transformXmlObject(XmlFilePojo xmlFilePojo){
XmlFilePojo returnPojo = xmlFilePojo;
returnPojo.setName("merkur");
return returnPojo;
}
}我认为我的错误出现在camel路径中,该路径尝试将xml文件转换为XmlFilePojo对象。
当我尝试运行它时,我得到了以下错误:
原因: org.apache.camel.InvalidPayloadException:没有类型为: XmlFilePojo的正文,但具有值:[B@659392cd类型: byte[] on: simple.xml。原因:没有类型转换器可用于将类型: byte[]转换为所需的类型: XmlFilePojo,值为[B@659392cd ]。Exchangesimple.xml。原因:[org.apache.camel.NoTypeConversionAvailableException -没有可用于从类型: byte[]转换为所需类型的类型转换器: XmlFilePojo,值为B@659392cd
因为我的文件中没有byte[],所以我不知道如何处理这个问题。希望有人能给出答案。
发布于 2015-05-08 19:14:31
当您在pojo上使用camel-jaxb注释时,只需将JAXB添加到类路径中,它就可以自动执行xml转换。只需使用POJO编写bean代码即可。
那么路线就很简单了
from("file:data/in")
.bean(XmlToBeanAndBackBean.class)
.to("file:data/out");https://stackoverflow.com/questions/30122184
复制相似问题