【问题标题】:Jaxb creates BigInteger variable for elements attributeJaxb 为元素属性创建 BigInteger 变量
【发布时间】:2014-03-24 16:04:24
【问题描述】:

我正在为我的公司开发一个 java 应用程序,其中包括一个 XML,我有一个模式作为输入。

IDE:NetBeans 8.0 Java:JDK 1.6(我知道,我知道...)

在模式中,其中一种元素类型有两个需要的属性:

<xs:complexType name="InsertType">
  <xs:attribute name="ID" type="NameType" use="required" />
  <xs:attribute name="Priority" type="xs:int" use="required" />
</xs:complexType>

现在为这个复杂类型生成的类如下所示:

public class InsertType {

    @XmlAttribute(name = "ID")
    protected String id;
    @XmlAttribute(name = "Priority")
    protected BigInteger priority;
    ...
}

除了 XML 属性名称的命名约定(我刚刚得到这个架构,命名约定只是我的反馈主题之一),为什么我在这里将“BigInteger”作为“优先级”的数据类型? 我收到的原始模式看起来像“优先级”

<xs:attribute name="Priority" type="xs:integer" use="optional">

所以我可以看到为什么 xs:integer 加上“可选”会触发“BigInteger”生成,但我已经将类型更改为“xs:int”并使用为必需,我收集到的它相当于“minOccurs='1 '" 这将(希望)解决一个元素的问题。

有人知道我接下来应该研究什么吗?我在这里不知所措,我发现的谷歌点击都指向使用“xs:int”而不是“xs:integer”和“minOccurs='1'”。

谢谢

编辑: 我忘了提到,这可能是必不可少的,绑定是从两个模式创建的,一个包括另一个。 第一个或主要模式描述了 XML 的整体架构。第二个主要包括所有使用的类型定义。 由于第一个包含类型定义以及这两者之间的拆分是不必要的。 但这和上面提到的问题有关系吗?

【问题讨论】:

  • 是否在任何地方定义了 Jaxb 绑定定义?
  • 在我的 netbeans 项目中,是的。它指向主模式。在 xml 模式中没有提到 jaxb。

标签: java netbeans jaxb


【解决方案1】:

好的,在再次检查所有细节后,我自己找到了答案。 我想知道为什么我对属性的更改都没有反映在生成的类中,所以我也更改了注释。 即使我删除了项目的构建目录,这些更改也没有反映在生成的类中。

解决方案,简单明了(我真的很尴尬地承认这一点)是删除 Netbeans 缓存文件夹(在 C:\Users\\\\Netbeans\Cache\8.0 中找到),重新启动 netbeans 并生成类再次。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    相关资源
    最近更新 更多