【问题标题】:How to generate java code from xsd using jaxb and not allowing the user to use the xml attribute如何使用 jaxb 从 xsd 生成 java 代码并且不允许用户使用 xml 属性
【发布时间】:2010-10-06 08:05:40
【问题描述】:

我正在使用 JAXB 从 xsd 生成 java 代码。

我想生成不能在 xml 中使用的属性(Java 代码)。

例如:

<xs:complexType name="Button">
   <xs:attribute type="xs:string"
                 name="ribbonGroup">
</xs:complexType>

我想在 Button java 类中看到属性ribbonGroup 的getter 和setter,但是我不想让用户在xml 中看到这个属性的选项。

谢谢。

【问题讨论】:

    标签: jaxb


    【解决方案1】:

    我想看看 getter 和 setter 中的属性ribbonGroup 按钮java类,

    您希望为ribbonGroup 生成get/set 方法。这意味着您不应该使用="prohibited" 来阻止XJC 生成。

    但我不想让用户 选项以在 xml。

    我是否正确,您的意思是您不希望在读取 XML 时加载ribbonGroup 属性,或者在写入 XML 时保存?如果是这样,@XmlTransient 注释用于防止字段/属性被封送为 XML。

    最终我相信您希望 JAXB XJC 工具生成此注释?这是正确的吗?

    【讨论】:

    • 嗯,我希望将 XML 写入 XSD 的用户不能使用“ribbonGroup”属性。
    • 但是,我希望从 XSD 生成 java 代码的 JAXB 将生成 Button 类的 getter 和 setter,因为我想在我的代码中使用它。
    • JAXB 将为ribbonGroup 生成get/set。如果属性是标记为@XmlTransient,它仍然存在,但不会在解组期间填充或在编组时生成 XML 属性。
    • 从 XDS 写入 XML 的用户会看到这个属性吗?
    • 有一个名为:use="prohibited" 的属性,现在这将允许用户使用ribbonGroup 属性,但JAXB 不会为按钮类生成此属性(getter 和setter)。尽管使用了 use="prohibited",但我可以让 JAXB 生成此属性吗?
    【解决方案2】:

    当XML的值为null或为空时,不要设置它的值;它不会创建标签。

    我认为 Jaxb 并没有创建 complexType setter。我在我的项目中创造了我自己

    【讨论】:

      猜你喜欢
      • 2013-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-08
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多