XSD에서 Java 클래스를 생성하기 위한 jaxb2-maven-plugin XJC 예제
오늘은 XSD에서 자바 클래스를 생성하는 jaxb2-maven-plugin XJC 예제를 살펴보겠습니다. JAXB는 Java 클래스와 XML 사이의 미들웨어 기술입니다. JAXB를 사용하여 Java 객체에서 XML을 생성하거나 그 반대로 할 수 있습니다.
jaxb2-maven-플러그인
우리는 XSD를 사용하여 계약 데이터 구조를 정의하므로 XML 스키마를 나타내는 Java 클래스를 생성하는 것은 일반적이지 않습니다. jaxb2-maven-plugin XJC는 XSD 파일에서 Java 클래스를 생성하는 데 사용할 수 있는 JAXB 바인딩 컴파일러 도구입니다. 여기에서는 Maven 프로젝트에서 jaxb2-maven-plugin XJC를 사용하여 XSD에서 Java 클래스를 생성하는 방법을 배웁니다. 우선 우리는 maven 프로젝트를 생성해야 하고, 그 다음 jaxb2-maven-plugin
플러그인을 사용하여 XSD에서 자바 클래스를 생성해야 합니다. 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>
인수의 global.xjb
파일에 주목하십시오. 여기에서 Java 바인딩 규칙을 지정합니다. <코드>글로벌.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>
다음은 자바 클래스를 생성하는 데 사용할 XSD입니다. 직원.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>
