【发布时间】:2015-11-16 09:19:25
【问题描述】:
我正在使用 Spring maven 插件,我想从特定文件夹中的指定 xml 模式创建 POJO 类。我通过java代码尝试了xjc命令,但它没有生成那些类。其次,我尝试使用jaxb,但它在marshell/unmarshelling 时处理xml 文件而不是xsd 架构。我认为这不是从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>
【问题讨论】:
-
我们在生产代码中使用了一个名为 XMLBeans 的工具。它已被弃用,但对我们来说效果很好。
-
你能解释一下吗?怎么用?
-
您不能“在运行时创建类”。但是,您可以使用 XJC 在构建时(或在此之前手动)从 XML 模式 (XSD) 文件创建类。不过,我不知道您是如何使用 maven 做到这一点的,但是您是否尝试过自己运行 xjc 命令?
-
正如@Andreas 提到的,您不能在运行时创建类,但可以在构建期间创建类。有关更多信息,请参阅here。请记住,大约一年前,XMLBeans 已停用。因此,您可能希望使用更现代的框架。
-
@Andreas 是的,我将更改它应该在构建时生成的问题。当我在 cmd 上手动触发该命令时,我尝试使用 xjc 它的工作,但通过 java 代码它不会生成该类。
标签: java spring maven xsd pojo