JAXB 深入显出 - JAXB 教程 简单转化案例

摘要: JAXB 作为JDK的一部分,能便捷地将Java对象与XML进行相互转换,本教程从实际案例出发来讲解JAXB 2 的那些事儿。完整版目录

Java 对象转 XML

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

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

就是这么简单,只需要在普通的Java类上添加注解@XmlRootElement
这里有几点需要注意:

  • JAXB 转换对象必须属于JAXBElement类型,或者使用 @XmlRootElement注解
  • JAXB 转换对象必须拥有无参数构造器(默认存在,如果被覆盖,需要显示指定)
    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>

XML 转 Java 对象

Java bean 对象依然使用Student.java

public static void xmlTojava() throws Exception {
        // 获取JAXB的上下文环境,需要传入具体的 Java bean -> 这里使用Student
        JAXBContext context = JAXBContext.newInstance(Student.class);
        // 创建 UnMarshaller 实例
        Unmarshaller unmarshaller = context.createUnmarshaller();
        // 加载需要转换的XML数据 -> 这里使用InputStream,还可以使用File,Reader等
        InputStream stream = SimpleTest.class.getClassLoader().getResourceAsStream("lesson1.xml");
        // 将XML数据序列化 -> 该方法的返回值为Object基类,需要强转类型
        Student stu = (Student) unmarshaller.unmarshal(stream);
        // 将结果打印到控制台
        System.out.println(stu);
    }

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

所需的lesson1.xml文件如下:

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

其实就是上一步输出的数据。

    public static void main(String[] args) throws Exception {
        xmlTojava();
    }

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

Student [id=001, name=Tom, age=22]

完整代码

可以在GitHub找到完整代码。

下节预览

本节基于简单的JAXB 代码,直观体验的JAXB的转换过程。下一节将着重介绍注解在转换过程的使用情形。

jaxb2-maven-plugin是一个用于在Maven构建过程中生成Java类文件的插件。它基于Java Architecture for XML Binding(JAXB)技术,可以将XML文档转换为Java对象。 通过配置pom.xml文件,可以在Maven构建过程中使用jaxb2-maven-plugin来执行以下操作: 1. 生成Java类文件:插件会根据预定义的XSD(XML Schema Definition)文件,使用JAXB技术生成与XML结构相对应的Java类文件。这些生成的类文件可以用来在Java应用程序中读取和处理XML文档。 2. 编译生成的Java类文件:生成的Java类文件需要被编译,以便在项目中使用。插件会自动将这些生成的类文件编译成可执行的Java字节码文件。 3. 打包生成的类文件:插件还可以将生成的Java类文件打包到项目的Jar文件或War文件中,方便在其他项目或部署环境中使用。 使用jaxb2-maven-plugin有以下好处: 1. 减少手动编写Java类的工作量:通过使用插件自动生成Java类文件,开发人员可以节省大量的手动编写代码的时间。 2. 提高开发效率:插件可以与Maven构建过程集成,自动执行生成Java类、编译和打包的任务,从而提高了开发效率。 3. 保持Java类与XML文档的一致性:生成的Java类文件与XML文档的结构一致,可以保证在读取和处理XML时的正确性和准确性。 4. 支持自定义配置:插件允许开发人员根据项目的需求进行自定义配置,例如指定XSD文件的位置、生成的类文件的输出目录等。 总而言之,jaxb2-maven-plugin是一个方便的插件,可以自动化生成、编译和打包与XML文档对应的Java类文件,提高开发效率并保持代码与XML文档的一致性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cj96248

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值