从POJO生成XSD(没有JAXB)?

时间:2016-01-26 15:43:46

标签: java xsd

我需要从一些POJO创建一个XSD,其中大部分都是有一个no-arg构造函数。 JAXB需要一个无参数构造函数,因此我不考虑JAXB。我没有POJO的代码,所以我不能去改造它们(这也意味着我不能添加任何注释)。

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

2 个答案:

答案 0 :(得分:0)

查看此工具,看看它是否能满足您的需求: http://80.127.98.91:6060/internal/doc/ssj/devguide_java2schema.html

很抱歉,但是曾经有一个在apache轴项目下构建的java2wsdl工具会生成wsdl,其中包含接口使用的对象的xsd。可能有一些东西需要寻找。过去工作得很好。

这可能是一个更好的工具:http://xmlbeans.apache.org/ 得运行..希望这有帮助。

答案 1 :(得分:0)

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

我认为在你的类中添加no-arg constuctor并不是什么大不了的事。

使用标准JAXB工具的Anothor方式:https://docs.oracle.com/javase/tutorial/jaxb/intro/j2schema.html 部分“j2s-xmlType示例”:

  

类必须具有公共零参数构造函数或静态零参数工厂方法才能通过此批注进行映射。在解组期间使用这些方法之一来创建类的实例。工厂方法可以位于工厂类或现有类中。

     

关于使用哪种方法进行解组,有一个优先顺序:

     

如果在注释中标识了工厂类,则还必须标识该类中的相应工厂方法,并且将使用该方法。   如果在注释中标识了工厂方法但未标识工厂类,则工厂方法必须位于当前类中。即使存在公共零参数构造函数方法,也使用工厂方法。   如果注释中未标识工厂方法,则该类必须包含公共零参数构造函数方法

所以你可以创建工厂。