gpt4 book ai didi

xsd - XJC 生成整数而不是 int

转载 作者:行者123 更新时间:2023-12-03 17:43:59 26 4
gpt4 key购买 nike

以下模式应该生成两个原始 int Value 中的字段类,而是生成一个原始 int元素 java.lang.Integer属性 .

<?xml version="1.0" encoding="UTF-8"?>

<xsd:schema version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.com/test" xmlns:test="http://www.example.com/test"
elementFormDefault="qualified">

<xsd:element name="values">
<xsd:complexType>
<xsd:sequence minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="test:value" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>

<xsd:element name="value">
<xsd:complexType>
<xsd:sequence>
<!-- Is generated as primitive int -->
<xsd:element name="element" type="xsd:int" />
</xsd:sequence>
<!-- Is generated as java.lang.Integer -->
<xsd:attribute name="attribute" type="xsd:int" />
</xsd:complexType>
</xsd:element>

</xsd:schema>

我已经浏览了 JAXB documentation对于任何说属性和元素可能以不同方式生成并且一无所获的东西。

谁能解释一下?是否有修复方法可以使属性生成为原始 int ?

最佳答案

我不完全确定这是答案,但我在调试我的应用程序时顿悟了。

的默认多重性元素 在 XML 模式中是 1..1 (required)其中作为 的默认多重性属性 0..1 (optional) .

  • 所以,由于元素 是必需的,并且 Java 中的原语具有默认值(很可能是 0),因此生成 <xsd:element type="xsd:int" /> 是有意义的。作为 Java 原语。
  • 属性 是可选的,有可能是 nillable使用原语是不可能的。 java.lang.IntegerObject因此允许为 null ,因此生成 <xsd:attribute type="xsd:int" /> 是有意义的作为 java.lang.Integer .

  • 如果您制作 属性 是必需的( <xsd:attribute type="xsd:int" use="required" /> ),它将生成为原始 int .我还没有看到 JAXB 明确说明这一点的文档,但这并不意味着它不存在;也许我只是错过了。

    关于xsd - XJC 生成整数而不是 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7270360/

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