如何从XSD创建pojo类?

时间:2015-11-16 09:19:25

标签: java spring maven xsd pojo

我正在使用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>

4 个答案:

答案 0 :(得分:14)

  

我的建议是使用JAXB

我在eclipse测试了它,对我来说效果很好。我的建议是尝试从command lineeclipse的帮助生成POJO。成功配置后,使用maven生成POJO build time

有几个教程可以了解这一点,请根据您的偏好点击以下链接:

youtube链接:

我希望它有所帮助!

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

答案 1 :(得分:1)

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

xjc test.xsd

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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 中的隐式行为