Bean和XML之间的转换

概述

  Jackson是一个强大工具,可用于Json、XML、实体之间的相互转换。此篇博客主要着重于 实体和XML之间的转换。

XML转换核心

 要想灵活地进行转换,需要在实体上使用到Jackson提供的四个注解: 
 @JacksonXmlElementWrapper:可用于指定List等集合类,外围标签名; 
 @JacksonXmlProperty:指定包装标签名,或者指定标签内部属性名; 
 @JacksonXmlRootElement:指定生成xml根标签的名字; 
 @JacksonXmlText:指定当前这个值,没有xml标签包裹。

实例展示

XML结构:一个班级—>一个老师(卡卡西)—>三个学生(小樱,佐助,鸣人)
班级类:

@JacksonXmlRootElement(localName = "Class")
public class Group {
    Teacher teacher;  //教师
    @JacksonXmlElementWrapper(localName = "Students")
    @JacksonXmlProperty(localName = "Stu")
    List<Student> student;  //学生列表

    public Teacher getTeacher() {
        return teacher;
    }

    public void setTeacher(Teacher teacher) {
        this.teacher = teacher;
    }

    public List<Student> getStudent() {
        return student;
    }

    public void setStudent(List<Student> student) {
        this.student = student;
    }
}

教师类:贝克汉姆

@DATA
public class Teacher {
    @JacksonXmlProperty(localName = "TypeCode")
    private TeacherType teacherTypeCode;
    private String name;
    private String gender;
    private String age;
}

教师类型: 技巧老师 or 体能老师 

public class TeacherType {
@JacksonXmlProperty(isAttribute = true, localName = "type")
private String type;
@Data
@JacksonXmlText
private String value;

    public TeacherType(){

    }

    public TeacherType(String type, String value){
        this.type = type;
        this.value = value;
    }
}

学生类: 梅西、C罗、武磊

@Data
public class Student {

    @JacksonXmlProperty(isAttribute = true, localName = "stu_id")
    private String id;  //学号---属性
    private String name;
    private String gender;
    private String age;
}

main方法进行测试

public class JacksonXMLTest {
    public static void main(String[] args) throws JsonProcessingException {

        XmlMapper xmlMapper = new XmlMapper();  
        xmlMapper.setDefaultUseWrapper(false);
        //字段为null,自动忽略,不再序列化
        xmlMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        //XML标签名:使用骆驼命名的属性名,  
        xmlMapper.setPropertyNamingStrategy(PropertyNamingStrategy.UPPER_CAMEL_CASE); 
        //设置转换模式 
        xmlMapper.enable(MapperFeature.USE_STD_BEAN_NAMING);  

        //序列化 bean--->xml
        Group group = new Group();  //技巧班级

        Teacher teacher = new Teacher();
        teacher.setTeacherTypeCode(new TeacherType("0","技巧老师"));
        teacher.setName("贝克汉姆");
        teacher.setAge("35");
        teacher.setGender("1");

        Student student1 = new Student();
        student1.setId("001");  //学号
        student1.setName("梅西");
        student1.setAge("28");
        student1.setGender("1");

        Student student2 = new Student();
        student2.setId("002");  //学号
        student2.setName("C罗");
        student2.setAge("29");
        student2.setGender("1");

        Student student3 = new Student();
        student3.setId("003");  //学号
        student3.setName("武磊");
        student3.setAge("22");
        student3.setGender("1");

        group.setTeacher(teacher);
        group.setStudent(Arrays.asList(student1,student2,student3));

        String result = xmlMapper.writeValueAsString(group);
        System.out.println("序列化结果:" + result);

       }
}

序列化后的XML

参考资料

Jackson官网xml文档
Jackson_XML注解

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值