提问者:小点点

骆驼路线:将xml读入pojo并将其写回xml文件


我想了一段时间,但由于很多配置文件都是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;
     }
}

还有我在骆驼路线中使用的憨豆:

@Component
public class XmlToBeanAndBackBean {

    public XmlFilePojo transformXmlObject(XmlFilePojo xmlFilePojo){
        XmlFilePojo returnPojo = xmlFilePojo;
        returnPojo.setName("merkur");
        return returnPojo;
    }
}

我认为我的错误在于camel试图将xml文件转换成XmlFilePojo对象的camel路线。

当我尝试运行它时,我收到以下错误:

导致原因:org . Apache . camel . invalidpayloadexception:没有类型为:XmlFilePojo但值为:[B@659392cd的类型:byte[]位于:simple.xml上。导致原因:没有类型转换器可用于将类型:byte[]转换为所需类型:XmlFilePojo,值为[B@659392cd。Exchange[simple.xml]。导致原因:[org . Apache . camel . notypeconversionavailableexception-没有类型转换器可用于从类型:byte[]转换为所需的类型:值为[B@659392cd]的XmlFilePojo

由于我的文件中没有字节[],我不知道如何处理这个问题。希望有人有答案。


共2个答案

匿名用户

只需将 camel-jaxb 添加到类路径中,它就可以执行自动 xml

那么路线很简单

from("file:data/in")
    .bean(XmlToBeanAndBackBean.class)
    .to("file:data/out");
  • http://camel.apache.org/jaxb

匿名用户

您可以将散集与json库一起使用。

from("file:data/in")
.unmarshal().json(JsonLibrary.Jackson, XmlFilePojo.class)
.to("file:data/out");

相关问题