我希望将项目的jaxb版本从1更新到2.有没有人尝试在他们的项目中执行此操作,是否有任何人想要这样做的提示?我知道每个项目都是独一无二的,我只是在寻找一般提示。
答案 0 :(得分:4)
JAXB2将为简单类型限制生成枚举类。任何依赖于为这些类型的使用设置字符串值的Java代码都需要使用相应的枚举。我认为这很好,因为你在编译时得到了类型检查而不是在运行时的验证警告。
JABX2使用类型化列表而不是无类型列表,因此您可以从java代码中删除大量的转换。
日期支持大大改善。 IIRC,JAXB1中的大多数日期类型生成Calendar,而在JAXB2中它们生成XMLGregorianCalendar。
答案 1 :(得分:1)
今天我正在阅读有关JAXB 1的教程,并尝试使用JAXB 2.1(包含在JavaSE 6中)编译该示例。 XSD中的元素使用了未命名的类型,例如:
<xs:element name="logging">
<xs:complexType>
<xs:attribute name="debug" type="xs:boolean" use="required"/>
<xs:attribute name="file" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
对于我所看到的,JAXB 1.0生成了一个Logging类和一个LoggingType类(引用了未命名的logging元素类型),而JAXB 2只生成了一个Logging类。这种情况经常发生在这个例子的所有标签上,所以我想在这种情况下这种情况经常发生。但是,它足以删除“Type”后缀以修复编译,而无需进行其他更改。