Hôm nay, chúng ta sẽ tìm hiểu ví dụ về việc sử dụng plugin jaxb2 maven XJC để tạo lớp Java từ XSD. JAXB là một công nghệ trung gian (middleware) giữa lớp Java (Java Class) và XML. Chúng ta có thể sử dụng JAXB để tạo XML từ đối tượng Java và ngược lại.

Plugin jaxb2 maven là gì?
Chúng ta sử dụng XSD để định nghĩa cấu trúc dữ liệu hợp đồng, vì vậy việc tạo các lớp Java đại diện cho lược đồ XML là điều phổ biến. Plugin jaxb2 maven XJC là một công cụ biên dịch JAXB Binding có thể được sử dụng để tạo các lớp Java từ các tệp XSD. Tại đây, chúng ta sẽ học cách sử dụng plugin jaxb2 maven XJC trong một dự án Maven để tạo các lớp Java từ XSD. Đầu tiên, chúng ta phải tạo một dự án Maven, sau đó chúng ta cần sử dụng plugin jaxb2-maven-plugin để tạo các lớp Java từ XSD.
Tệp pom.xml
<project xmlns="<https://maven.apache.org/POM/4.0.0>" xmlns:xsi="<https://www.w3.org/2001/XMLSchema-instance>" xsi:schemaLocation="<https://maven.apache.org/POM/4.0.0> <https://maven.apache.org/xsd/maven-4.0.0.xsd>">
<modelVersion>4.0.0</modelVersion>
<groupId>jd</groupId>
<artifactId>jd</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>JD Example XSD to Java</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<!-- Plugin required to build java classes from XSD using XJC -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- The name of your generated source package -->
<arguments>-extension -npa -b ${project.basedir}/src/main/xsd/global.xjb</arguments>
</configuration>
</plugin>
</plugins>
</build>
</project>
Lưu ý tệp global.xjb trong phần đối số, đây là nơi chúng ta chỉ định các quy tắc ràng buộc Java. Tệp global.xjb
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jaxb:bindings version="2.0"
xmlns:jaxb="<https://java.sun.com/xml/ns/jaxb>"
xmlns:xjc="<https://java.sun.com/xml/ns/jaxb/xjc>"
xmlns:xs="<https://www.w3.org/2001/XMLSchema>"
jaxb:extensionBindingPrefixes="xjc">
<jaxb:globalBindings>
<xjc:simple />
<xjc:serializable uid="-1" />
<jaxb:javaType name="java.util.Calendar" xmlType="xs:dateTime"
parseMethod="javax.xml.bind.DatatypeConverter.parseDateTime"
printMethod="javax.xml.bind.DatatypeConverter.printDateTime" />
</jaxb:globalBindings>
</jaxb:bindings>
Đây là tệp XSD sẽ được sử dụng để tạo các lớp Java. Tệp Employee.xsd
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="<https://www.w3.org/2001/XMLSchema>"
targetNamespace="<https://www.journaldev.com/com/journaldev/employee/data>"
xmlns:empns="<https://www.journaldev.com/com/journaldev/employee/data>"
elementFormDefault="qualified">
<element name="empRequest" type="empns:EmpRequest"></element>
<element name="empResponse" type="empns:EmpResponse"></element>
<complexType name="EmpRequest">
<sequence>
<element name="id" type="int" minOccurs="0" maxOccurs="1" />
<element name="name" type="string" minOccurs="0" maxOccurs="1" />
</sequence>
</complexType>
<complexType name="EmpResponse">
<sequence>
<element name="id" type="int" minOccurs="1" maxOccurs="1" />
<element name="name" type="string" minOccurs="1" maxOccurs="1" />
<element name="role" type="string" minOccurs="1" maxOccurs="unbounded" />
<element name="gender" type="string" minOccurs="1" maxOccurs="1" />
<element name="salary" type="string" minOccurs="1" maxOccurs="1" />
</sequence>
</complexType>
</schema>
Chỉ cần xây dựng dự án Maven bằng cách sử dụng mvn clean install và bạn sẽ thấy các lớp Java được tạo ra trong thư mục target/generated-sources/jaxb. Cuối cùng, dự án sẽ trông giống như hình ảnh dưới đây.
Đọc thêm:
- Hướng dẫn JAXB (JAXB Tutorial)
- Tham khảo: Trang chính thức của jaxb2 maven plugin, java xjc