如何从 XSD 创建 pojo 类?

How to create pojo classes from XSD?

我正在使用 Spring maven 插件,我想从特定文件夹中指定的 xml 模式创建 POJO 类。我尝试通过 java 代码使用 xjc 命令,但它没有生成 类。其次,我尝试使用 jaxb,但它处理 xml 文件而不是 xsd 模式,而 marshell/unmarshelling。我认为这不是从 xsd.

创建 POJO 的方法

从 java 中的 xsd 生成 类 的正确方法是什么?

下面是XSD

   <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <xs:element name="Employee">
   <xs:complexType>
   <xs:sequence>
    <xs:element name="empId" type="xs:long"/>
    <xs:element name="lastName" type="xs:string"/>
    <xs:element name="title" type="xs:string"/>
    <xs:element name="salary" type="xs:integer"/>
    <xs:element name="address">
    <xs:complexType>
       <xs:sequence>
         <xs:element name="city" type="xs:string"/>
         <xs:element name="street" type="xs:string"/>
         <xs:element name="zipcode" type="xs:integer"/>
         <xs:element name="privatePhoneNo">
           <xs:complexType>
             <xs:sequence>
                 <xs:element name="privateMobile" type="xs:string"/>
                 <xs:element name="privateLandline" type="xs:string"/>
             </xs:sequence>
           </xs:complexType>
         </xs:element>
        </xs:sequence>
     </xs:complexType>
    </xs:element>
 </xs:sequence>
 </xs:complexType>
 </xs:element>
 </xs:schema>

My recommendation is to go with JAXB.

我已经在 eclipse 中测试过了,对我来说效果很好。我的建议是尝试从 command line 或在 eclipse 的帮助下生成 POJO。一旦成功配置 maven 生成 POJO build time.

有几个教程可以学习这个,请根据您的喜好遵循以下 link(s):

还有 youtube links:

希望对您有所帮助!

如果您遇到任何问题,请随时发表评论。

.xsd 文件转换为 Java 文件的一种简单方法是 xjc 工具。只需在同一工作目录中执行以下命令:

xjc test.xsd

jaxb2-maven-plugin

使用 jaxb2-maven-plugin 是最简单的方法。如下定义插件:

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>jaxb2-maven-plugin</artifactId>
            <version>1.6</version>
            <executions>
                <execution>
                    <goals>
                        <goal>xjc</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <schemaDirectory>${project.basedir}/src/main/xsd/</schemaDirectory>
                <schemaFiles>MARC21slim.xsd</schemaFiles>
            </configuration>
        </plugin>
    </plugins>
</build>

并执行:

mvn jaxb2:xjc

生成的文件将位于 target\generated-sources\jaxb

jaxb2-maven-plugin 版本 2 更改了配置方式。

以下将运行对src/main/resource中的所有内容进行xjc并把它com.yourcompany.xsd

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxb2-maven-plugin</artifactId>
    <version>2.5.0</version>
    <executions>
        <execution>
            <goals>
                <goal>xjc</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <sources>
            <source>src/main/resources</source>
        </sources>
        <packageName>com.yourcompany.xsd</packageName>
    </configuration>
</plugin>

检查 https://www.mojohaus.org/jaxb2-maven-plugin/Documentation/v2.5.0/example_xjc_basic.html

中的隐式行为