Java 如何从 XSD 创建 pojo 类?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/33731896/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-11 14:58:54  来源:igfitidea点击:

How to create pojo classes from XSD?

javaspringmavenxsdpojo

提问by Chaitanya Ghumare

I am using Spring maven plugin, I want to create POJO classes from specified xml schema in particular folder. I tried with xjccommand through java code, but its not generating that classes. secondly, I tried with jaxb, but its dealing with xmlfile not a xsdschema while marshell/unmarshelling. I think this not a way to create POJO from xsd.

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

What is a correct way to generate classes from xsd in java?

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

below is 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>

采纳答案by SyntaX

My recommendation is to go with JAXB.

我的建议是去JAXB

I have tested it in eclipse, works well for me. My suggestion is try generating the POJO from command lineor with the help of eclipse. Once successful configure it with mavento generate the POJO build time.

我已经在 中进行了测试eclipse,对我来说效果很好。我的建议是尝试从生成POJOcommand line或与帮助eclipse。一旦成功配置它maven以生成 POJO build time

There are several tutorials to learn this, please follow the below link(s) based upon your preference:

有几个教程可以学习这一点,请根据您的喜好点击以下链接:

Also the youtube links:

还有youtube链接:

I hope it helps!

我希望它有帮助!

Feel free to comment if you encounter any issue.

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

回答by Arpit Aggarwal

One simple way to convert .xsdfiles to Java file is xjctool. Just execute the following command in the same working directory:

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

xjc test.xsd

回答by AzizSM

jaxb2-maven-plugin

jaxb2-maven-插件

Using jaxb2-maven-plugin is the easiest way. Define the plugins as below :

使用 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>

and execute :

并执行:

mvn jaxb2:xjc

the generated files will be located in target\generated-sources\jaxb

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