ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java – camel route:将xml读入pojo并将其写回xml文件

2019-06-09 13:06:33  阅读:400  来源: 互联网

标签:java xml spring apache-camel


我现在讨厌了一段时间,但由于很多配置文件都在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对象.

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

引起:org.apache.camel.InvalidPayloadException:没有可用的类型:XmlFilePojo,但有值:[B @ 659392cd类型:byte [] on:simple.xml.引起:没有类型转换器可以从类型:byte []转换为所需类型:XmlFilePojo,其值为[B @ 659392cd.交换[simple.xml.引起:[org.apache.camel.NoTypeConversionAvailableException – 没有类型转换器可用于从类型:byte []转换为所需类型:XmlFilePojo,其值为[B @ 659392cd]

由于我的文件中没有byte [],我不知道如何处理它.
希望有人有答案.

解决方法:

只需将camel-jaxb添加到类路径中,它就可以执行自动xml< - > pojo转换,当您在POJO上使用JAXB注释时.只需使用POJO编写bean代码即可.

然后路线很简单

from("file:data/in")
    .bean(XmlToBeanAndBackBean.class)
    .to("file:data/out");

> http://camel.apache.org/jaxb

标签:java,xml,spring,apache-camel
来源: https://codeday.me/bug/20190609/1204883.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有