jaxb-xjc.jar

Today we will look into jaxb2-maven-plugin XJC example to generate java classes from XSD. JAXB is the middleware technology between Java Classes and XML. We can use JAXB to generate XML from Java Object and vice versa.

今天,我们将研究jaxb2-maven-plugin XJC示例,以从XSD生成Java类。 JAXB是Java类和XML之间的中间件技术。 我们可以使用JAXB从Java Object生成XML,反之亦然。

jaxb2-maven-插件 (jaxb2-maven-plugin)

We use XSD to define the contract data structure, so it’s not common to generate java classes that represent the XML schema.

我们使用XSD定义合同数据结构,因此生成表示XML模式的java类并不常见。

jaxb2-maven-plugin XJC is JAXB Binding compiler tool that can be used to generate Java Classes from XSD files.

jaxb2-maven-plugin XJC是JAXB绑定编译器工具,可用于从XSD文件生成Java类。

Here we will learn how to use jaxb2-maven-plugin XJC in a maven project to generate java classes from XSD.

在这里,我们将学习如何在Maven项目中使用jaxb2-maven-plugin XJC从XSD生成Java类。

First of all we have to create a maven project, then we need to use jaxb2-maven-plugin plugin to generate java classes from XSD.

首先,我们必须创建一个maven项目,然后我们需要使用jaxb2-maven-plugin插件从XSD生成Java类。

pom.xml

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>

Notice the global.xjb file in arguments, this is where we specify java binding rules.

注意参数中的global.xjb文件,这是我们指定Java绑定规则的地方。

global.xjb

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>

Here is the XSD that will be used to generate java classes.

这是将用于生成Java类的XSD。

Employee.xsd

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>

Just build the maven project using mvn clean install and you will see java classes generated in target/generated-sources/jaxb directory.

只需使用mvn clean install构建maven项目,您将在target/generated-sources/jaxb目录中看到生成的Java类。

Finally the project would look something like below image.

最终,该项目将如下图所示。

Further Read: JAXB Tutorial

进一步阅读: JAXB教程

Reference: jaxb2 maven plugin official page, java xjc

参考: jaxb2 maven插件官方页面java xjc

翻译自: https://www.journaldev.com/1312/jaxb2-maven-plugin-xjc-example-generate-java-classes-xsd

jaxb-xjc.jar

更多推荐