Java到XSD或XSD到Java

我知道,使用JAXB,您可以从XSD生成Java文件,并且您还可以从带注释的POJO生成XSD 。 各有哪些优缺点? 一个整体比另一个好吗?

我们基本上希望将事件序列化为XML格式的日志。

最终取决于你想要关注的地方:

如果XML Schema是最重要的事情

然后最好从XML模式开始并生成JAXB模型。 有一个JAXB(JSR-222)实现无法生成的XML模式的详细信息:

  • maxOccurs不是0,1或unbounded
  • 简单类型的许多方面
  • 模特组

如果对象模型是最重要的事情

如果您将使用Java模型而不仅仅是在对象和XML之间进行转换(即使用JPA进行持久化),那么我建议从Java对象开始。 这将给你最大的控制权。

这取决于您对启动点的要求和情况。

根据您的要求,使用generate Java files from an XSD因为您希望首先定义Java应支持的输出(XML)格式。

鉴于XML的一个要点是可移植的数据传输格式,无论平台或语言如何都可用,我会避免从任何特定的编程语言生成XSD,这是一条经验法则。 如果您知道您只是在Java端点之间进行通信,那么这可能无关紧要(但您确定这将永远是真的吗?)。

在其他条件相同的情况下,以编程语言中立的方式定义接口/模式会更好。

这个一般原则有很多例外,特别是如果你要与现有或遗留代码集成……

如果你有机会设计pojo和schema,那就是设计问题 – 你是为“完美”架构还是为“完美”java类设计的。

在某些情况下,您没有选择的奢侈品,在系统集成方案中,您可能会从另一个需要适应的系统获得预定义的XSD,然后XSD – > Class将是唯一的方法。