如何从xsd模式生成simple-xml java注释对象

时间:2011-05-31 20:47:50

标签: java android xml xsd simple-framework

好的,所以我搜索了stackoverflow并找到了关于这个问题的未回答的子主题,这就是为什么我想明确指出这个问题:

是否有任何工具可以从xsd架构生成Simple Xml library带注释的java类?

我收到了几个xsd文件,这些文件描述了其他人开发的restful web-service返回的对象,目前我已将这些模式转换为simple-xml带注释的类。这些将用于我的Android应用程序。最好只是自动同步对模式的任何更改并从中重新生成类。 ws们有一个针对那些模式的Jackson兼容类的存储库,但是我不想使用Jackson - 我使用的是Spring Android,所以我更喜欢使用首选的simple-xml。必须有像JAXB的xjc工具那样的技巧。

如果没有这样的工具 - 你能想到实现一个脚本的任何陷阱,该脚本从模式生成simple-xml的.java文件吗?也许任何值得扩展的工具的提示只需要定义要生成的注释和何时?

提前 - 非常感谢您的回答!

2 个答案:

答案 0 :(得分:4)

我不相信可以在Android上使用JAXB因为缺少包裹要求(see here),尤其是早期版本的Android API。您可以做的是通过xjc发送XSD并获取JAXB类输出,然后编写脚本以将JAXB注释转换为等效的Simple XML注释。这应该完全符合您的要求。

但是,理想情况下,如果您有时间,可以查看xjc的源代码并将其扩展为能够输出JAXB或Simple注释类。

答案 1 :(得分:0)

据我所知,Simple XML用于创建带注释的类来编组/解组XML。
Java Web Services框架使用特定绑定:
例如。 CXF支持(除了JAXB)Aegis,XML Beans等CXF data bindings
Axis2支持ADB,XMLBeans等Axis2 data bindings
与JAX-WS相同 我不知道Spring WS(但我怀疑他们支持特别简单)
恕我直言,如果您完全需要使用Simple XML,只需自己创建类。在您的情况下,这似乎是可行的,因为您注意到:

I received a couple of xsd files describing the objects returned by a restful web-service 

因此对于一些文件可能是可能的。我不认为您应该担心Web服务实现者对架构的更改,因为如果它们进行了更改,您无论如何都必须重新生成客户端部分。在任何情况下,一旦部署了Web服务,模式就不会改变,否则所有客户端应用程序都会受到影响 如果要创建自己的工具,则必须创建一个代码生成器,该代码生成器将解析xsd文件并为Simple XML创建带注释的类。这对我来说似乎付出了很多努力 希望这有帮助