java - Jaxb 为元素属性创建 BigInteger 变量

标签 java netbeans jaxb

我正在为我的公司开发一个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'”。

谢谢

编辑: 我忘了提及,这可能是必要的,绑定(bind)是从两个模式创建的,一个包含另一个。 第一个或主要模式描述了 XML 的整体架构。第二个主要由使用的所有类型定义组成。 由于第一个也包含类型定义,因此没有必要将两者分开。 但这和上面提到的问题有什么关系吗?

最佳答案

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

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

关于java - Jaxb 为元素属性创建 BigInteger 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22614551/

相关文章:

java - 当一个值输入到控制台时如何返回指定的getter值? - java

java - 从构建中排除包而不是从 Netbeans 8 中的 View 中排除包?

java.lang.IllegalStateException : Query argument "" not found in the list of parameters provided during query execution

java - 如何删除 NetBeans 中自动生成的注释? (//NOI18N)

java - docx 生成 : putting elements inside ffData (CTFFData)

java - 如何在 JAXB 中使用泛型处理枚举?

java - OXM:映射变量元素名称

java - 内存是连续分配给数组列表的吗?

java - Activity 未找到异常 : Unable to find explicit activity class GoogleDriveProxeyActivity have you declared this

java - 当 xml 输入作为流给出且某些 xml 元素为空时,SAX 解析器无法正常工作