gpt4 book ai didi

java - JAXB 2.1 绑定(bind)自定义选项

转载 作者:行者123 更新时间:2023-12-01 05:57:53 24 4
gpt4 key购买 nike

我正在使用 JAXB 2.1 从 XSD 文件生成 Java 对象。 XSD 文件中有几个代表业务模型实体的元素,这些元素具有常见的名称,例如帐户等。使用生成的文件来解码 XML 的系统在其域模型中有几个冲突的类名称。虽然我们可以使用不同的包名称来解决类名冲突,但我认为拥有不同名称的对象会更具可读性/可维护性。

因此,我想更改 XJC 编译,以便生成以下对象:DataTransferAccount.java 等,而不是 Account.java。 super 好,我将在绑定(bind)架构时使用 JAXB 提供的两个选项之一 ( http://java.sun.com/webservices/docs/2.0/tutorial/doc/JAXBUsing4.html ):

  1. 内联自定义 - 使用 jaxb 命名空间来注释 XSD 本身以指定类名称
  2. 外部绑定(bind)文件 - 向 XJC 提供额外文件,其中包含有关如何将架构元素映射到 Java 类的规则

除了易用性之外,还有使用选项 1 的充分理由吗?天真地,我很想使用它,因为它很简单,但如果我们决定放弃 JAXB XML 解码,我会发现维护方面的麻烦。

最佳答案

您的直觉很好 - 我考虑向架构添加内联注释的唯一情况是您或您的开发人员负责维护架构本身。

如果架构是其他人的,并且将来存在更改的危险,那么请抵制诱惑 - 使用外部绑定(bind)自定义。是的,使用起来有点尴尬,但值得付出努力。

至于您最初的名称冲突问题,XML Schema 也不允许重复使用相同的名称。在生成的 Java 中出现名称冲突的唯一方法是,如果您将多个命名空间中的模式编译到同一个 java 包中。如果您有多个命名空间,我强烈建议您将每个命名空间放入自己的包中,这确实会让事情变得更清晰。它还避免了这些名称冲突。

关于java - JAXB 2.1 绑定(bind)自定义选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2344799/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com