Xml JAXB2注释和XSD

Xml JAXB2注释和XSD,xml,annotations,xsd,jaxb,Xml,Annotations,Xsd,Jaxb,在JAXB1.0时代,使用java对象、XSD和XML的推荐方法是从XSD定义开始,使用JAXB从XSD生成java类并维护XSD 但是现在有了JAXB2.0注释,从java类生成XSD非常方便。是否建议采用从java类和注释开始并生成XSD的方法 谢谢,我不会这么说,不。XML模式在类型和某些结构方面要丰富得多,因此从Java生成的任何模式都将是非常基本和不可表达的 无论如何,从代码中生成一个起始模式,但是您应该真正地美化结果,并将其作为一级公民而不是生成的产品来维护。充实之后,您可以将其作为

在JAXB1.0时代,使用java对象、XSD和XML的推荐方法是从XSD定义开始,使用JAXB从XSD生成java类并维护XSD

但是现在有了JAXB2.0注释,从java类生成XSD非常方便。是否建议采用从java类和注释开始并生成XSD的方法


谢谢,

我不会这么说,不。XML模式在类型和某些结构方面要丰富得多,因此从Java生成的任何模式都将是非常基本和不可表达的


无论如何,从代码中生成一个起始模式,但是您应该真正地美化结果,并将其作为一级公民而不是生成的产品来维护。充实之后,您可以将其作为验证层插回到JAXB封送器/解封器中。

我建议开发人员从对象模型开始,并对其进行注释,以获得所需的XML。这使您在创建应用程序时具有更大的灵活性(例如还可以使用JPA将映射到数据库)。您只需要在希望共享结构(例如作为WSDL的一部分)时生成XML模式

查看我的博客,了解从模型类开始的JAXB示例:


好的,在我的例子中,我确实需要与web服务的消费者共享XSD,因为消费者可以使用任何语言来使用来自web服务的XML消息。共享数据结构的唯一方法是通过XSD。对,我知道JAXB注释只支持所有XSD语法和语义的子集。但是,由于我是从代码和类结构开始的,所以生成XSD与服务消费者共享目前似乎是一个很好的选择。如果我们从模式开始,并且模式比JAXB可以支持的类注释更具表现力,那么生成的类将无法利用更丰富的语义集。