相关文章推荐
沉稳的脸盆  ·  springboot jpa 无法更新 ...·  2 年前    · 
不拘小节的羽毛球  ·  visual-studio - ...·  2 年前    · 
叛逆的键盘  ·  gdiplus.dll_百度百科·  2 年前    · 
不敢表白的芒果  ·  bpmn - What are the ...·  2 年前    · 

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;

教师类:卡卡西

public class Teacher {
    @JacksonXmlProperty(localName = "TypeCode")
    private TeacherType teacherTypeCode;
    private String name;
    private String gender;
    private String age;
    public TeacherType getTeacherTypeCode() {
        return teacherTypeCode;
    public void setTeacherTypeCode(TeacherType teacherTypeCode) {
        this.teacherTypeCode = teacherTypeCode;
    public String getName() {
        return name;
    public void setName(String name) {
        this.name = name;
    public String getGender() {
        return gender;
    public void setGender(String gender) {
        this.gender = gender;
    public String getAge() {
        return age;
    public void setAge(String age) {
        this.age = age;

教师类型: 严厉老师 or 慈祥老师

public class TeacherType {
@JacksonXmlProperty(isAttribute = true, localName = "type")
private String type;
@JacksonXmlText
private String value;
public TeacherType(){
public TeacherType(String type, String value){
    this.type = type;
    this.value = value;
public String getType() {
    return type;
public void setType(String type) {
    this.type = type;

学生类: 小樱、佐助、鸣人

public class Student {
    @JacksonXmlProperty(isAttribute = true, localName = "stu_id")
    private String id;  //学号---属性
    private String name;
    private String gender;
    private String age;
    public String getId() {
        return id;
    public void setId(String id) {
        this.id = id;
    public String getName() {
        return name;
    public void setName(String name) {
        this.name = name;
    public String getGender() {
        return gender;
    public void setGender(String gender) {
        this.gender = gender;
    public String getAge() {
        return age;
    public void setAge(String age) {
        this.age = 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("25");
        teacher.setGender("1");
        Student student1 = new Student();
        student1.setId("001");  //学号
        student1.setName("鸣人");
        student1.setAge("18");
        student1.setGender("1");
        Student student2 = new Student();
        student2.setId("002");  //学号
        student2.setName("佐助");
        student2.setAge("18");
        student2.setGender("1");
        Student student3 = new Student();
        student3.setId("003");  //学号
        student3.setName("小樱");
        student3.setAge("18");
        student3.setGender("0");
        group.setTeacher(teacher);
        group.setStudent(Arrays.asList(student1,student2,student3));
        String result = xmlMapper.writeValueAsString(group);
        System.out.println("序列化结果:" + result);

序列化后的XML

Jackson官网xml文档
Jackson_XML注解

概述  Jackson是一个强大工具,可用于Json、XML、实体之间的相互转换。此篇博客主要着重于 实体和XML之间的转换。XML转换核心      要想灵活地进行转换,需要在实体上使用到Jackson提供的四个注解:    @JacksonXmlElementWrapper:可用于指定List等集合类,外围标签名;    @JacksonXmlProperty:指定包装标签名,或者指定标 Jackson是一个强大工具,可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。 @JacksonXmlElementWrapper 可用于指定List等集合类,允许指定用于包装列表和映射属性的XML元素;属性: namespace (default: “”) 确定包装器元素使用哪个XML命名空间 localName 包装元素的本地名称 useWrapping (default:true) 是否使用包装器元素:通过指定’fals
赠送jar包:jackson-dataformat-xml-2.12.2.jar; 赠送原API文档:jackson-dataformat-xml-2.12.2-javadoc.jar; 赠送源代码:jackson-dataformat-xml-2.12.2-sources.jar; 赠送Maven依赖信息文件:jackson-dataformat-xml-2.12.2.pom; 包含翻译后的API文档:jackson-dataformat-xml-2.12.2-javadoc-API文档-中文(简体)版.zip; Maven坐标:com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.12.2; 标签:fasterxmljackson、dataformat、xml、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
public class BeanToXMLUtils { //文件头编码类型 public static final String XML_HEAD_TYPE_UTF8 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; public static final String XML_HEAD_TYPE_GBK = "<?xml version=\"1.0\" encoding=\"GBK\"?>"; public static
官方文档 https://github.com/FasterXML/jackson-dataformat-xml/wiki/Jackson-XML-annotations 还是有点晦涩的,本文提供注解与其对应的 XML 的预览,便于理解。 典型 XML 如下: rootk6="6">    k1>strk1>    k-2>2k-2>     ki>1ki> 
Jackson 生成xml格式文件 Jackson是java应用中流行的操作Json工具库,很快成为Java生态中事实标准,Spring boot默认也使用Jackson。从版本2开始,支持json的同时引入成熟的xml实现。 1. 环境依赖 增加Jackson xml 模块,仅需要一个依赖: <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId&gt
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.5.3</version&g...
JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML,也方便生成JSON,这样一来可以更好的标志可以转换为JSON对象的JAVA类。 JDK中JAXB相关的重要Class和Interface: JAXBContext类,是应用的入口,用于管理XML/Java绑定信息。 Marshaller接口,将Java对