【发布时间】:2014-01-14 05:25:26
【问题描述】:
从方案中手动编写类和生成 JAXB 类的优点/缺点是什么。我正在开始新项目,想了解选择哪种方式来避免陷入困境。
我有复杂的 XML 结构(基本上是FreeSwitch configuration definition),在不同的 XML 级别上包含可重复的类型。
【问题讨论】:
从方案中手动编写类和生成 JAXB 类的优点/缺点是什么。我正在开始新项目,想了解选择哪种方式来避免陷入困境。
我有复杂的 XML 结构(基本上是FreeSwitch configuration definition),在不同的 XML 级别上包含可重复的类型。
【问题讨论】:
@XmlElementWrapper,而不是为该层生成单独的类(请参阅:How generate XMLElementWrapper annotation with xjc and customized binding)。XmlAdapter 更简洁(与http://blog.bdoughan.com/2011/08/xml-schema-to-java-generating.html 相比)。@XmlPath 映射)。对于 JAXB,它不需要是一种或另一种类型的选择。您可以使用外部绑定文件,以便在 clas 生成期间 JAXB 将使用您为某些复杂类型编写的类,然后让生成的模型的其余部分指向这些。
示例
更新
在 JAXB 中使用构造函数怎么样?据我所知,这是不允许的 没有公共构造函数的类。这意味着我不能做一些 必填字段。是否有适当的方法来处理必填字段?
JAXB 需要一个可以是私有的无参数构造函数。如果你的类没有无参数构造函数,那么你可以使用XmlAdapter。
【讨论】:
应该使用从模式生成的 IMPO 类来避免模式和 java 类之间的任何差异。
由于架构将在接口实体之间共享,因此双方必须让代码确认架构。
【讨论】:
JAXB 生成的类是值类,它们没有任何功能。为了添加任何功能,您应该使用生成的 bean 创建自己的类。您还可以扩展或修改我不推荐的生成的 bean。我认为这是主要问题之一。
另一方面,从手动注释的 bean 生成的模式可能不包括所有需要的约束。
这就是为什么我认为没有最好的。您可以根据需要选择两者。
【讨论】: