Java 对象转 XML

2018-12-16 21:35 更新

首先定义需要转换的 Java bean Student.java

@XmlRootElement
public class Student {
    private String id;
    private String name;
    private Integer age;
 // setters, getters
}

为了节省篇幅,我省略了对象的setters, getters方法,当然,为了便于直观地看到结果,还应该覆盖默认的 toString() 方法。

这个对象和我们常见的Java对象唯一的不同,就是在普通的Java类上添加了注解@XmlRootElement

    public static void javaToxml(Student stu) throws Exception {
        // 获取JAXB的上下文环境,需要传入具体的 Java bean -> 这里使用Student
        JAXBContext context = JAXBContext.newInstance(Student.class);
        // 创建 Marshaller 实例
        Marshaller marshaller = context.createMarshaller();
        // 设置转换参数 -> 这里举例是告诉序列化器是否格式化输出
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
        // 构建输出环境 -> 这里使用标准输出,输出到控制台Console
        PrintStream out = System.out;
        // 将所需对象序列化 -> 该方法没有返回值
        marshaller.marshal(stu, out);
    }

这里演示了最基本的Java 对象转XML过程。为了方便阅读,每一步都有简明注释。

使用 JAXB 不需要引入第三方依赖jar包。

public static void main(String[] args) throws Exception {
        Student stu = new Student("001","Tom",22);
        javaToxml(stu);
    }

使用main方法简单测试一下,在控制台可以看到如下输出。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<student>
    <age>22</age>
    <id>001</id>
    <name>Tom</name>
</student>

有几点需要注意:

  • JAXB 转换对象必须属于JAXBElement类型,或者使用 @XmlRootElement注解
  • JAXB 转换对象必须拥有无参数构造器(默认存在,如果被覆盖,需要显示指定)
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号