我正在使用JAXB 2.1从XSD文件生成Java对象。 XSD文件中有几个元素代表业务模型实体,具有常见名称,如Account等。使用生成的文件解组XML的系统在其域模型中有几个冲突的类名。虽然我们可以使用不同的包名来解决类名冲突,但我认为拥有不同名称的对象会更具可读性/可维护性。
因此,我想改变XJC编译,以便生成像:DataTransferAccount.java等对象而不是Account.java。超级,我将使用JAXB绑定模式时提供的两个选项之一(http://java.sun.com/webservices/docs/2.0/tutorial/doc/JAXBUsing4.html):
除了易用性之外,使用选项1是否有充分的理由?天真地,我很想使用它,因为它很容易,但如果我们决定放弃JAXB XML解组,我会看到维护问题。
答案 0 :(得分:0)
您的直觉很好 - 我考虑在架构中添加内联注释的唯一情况是您或您的开发人员是负责维护架构本身的人。
如果架构是别人的,并且将来有任何变化的危险,那么抵制诱惑 - 使用外部绑定定制。是的,使用它有点尴尬,但值得付出努力。
至于原始的名称冲突问题,不允许XML Schema重复使用相同的名称。如果您正在将多个名称空间中的模式编译到同一个Java包中,那么您应该在生成的Java中获取名称冲突的唯一方法。如果您有多个名称空间,我强烈建议您将每个名称空间放入其自己的包中,它确实会使事情变得更清晰。它也避免了这些名称冲突。