2016-01-26 64 views
0

我需要从一些POJO创建一个XSD,其中大部分是而不是有一个无参数构造函数。 JAXB需要一个无参数构造函数,因此我不考虑JAXB。我不拥有POJO的代码,所以我不能对它们进行改进(这也意味着我不能添加任何注释)。从POJO(不带JAXB)生成XSD?

除了通过反射自检来滚动我自己的XSD生成器之外,还有其他一些方法用于从POJO生成XSD吗?你会认为谷歌会显示很多工具,但到目前为止,我的搜索技能还没有提出任何东西。每个插件/工具似乎都使用JAXB。

回答

0

看看Axis2工具也许它不是使用JAXB,而是可能需要没有org的标准构造函数。 http://axis.apache.org/axis2/java/core/tools/index.html

我认为将no-arg构造函数添加到类中并不是什么大问题。

Anothor方式与标准JAXB工具:https://docs.oracle.com/javase/tutorial/jaxb/intro/j2schema.html 部分“J2S的XMLType实例”:

类必须有一个公共无参数的构造函数或静态零参数工厂方法,以将由此注释映射。在解组过程中使用其中的一种方法来创建类的实例。工厂方法可以位于工厂类或现有类中。

有作为用于解组该方法的优先顺序:

如果一个工厂类在注释识别,在该类中的对应的工厂方法也必须被识别,并且该方法将是用过的。 如果在注释中标识了工厂方法但未标识工厂类,则工厂方法必须位于当前类中。即使存在公共的零参数构造方法,也可以使用工厂方法。 如果没有工厂方法在标注标识,类必须包含一个公共的无参数的构造函数方法

所以,你可以创建工厂。

+0

正如我所说,我没有自己的代码,所以我不能添加无参数的构造函数。即使我可以,这也是不可取的,因为它可以有效地防止最终字段有不可变的POJO。 –