我正在使用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>
答案 0 :(得分:14)
我的建议是使用
JAXB
。
我在eclipse
测试了它,对我来说效果很好。我的建议是尝试从command line
或eclipse
的帮助生成POJO。成功配置后,使用maven
生成POJO build time
。
有几个教程可以了解这一点,请根据您的偏好点击以下链接:
XJC
Maven Plugin 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 中的隐式行为