Java Jaxb中int变量的用法

Java Jaxb中int变量的用法,java,xml,jaxb,xsd,Java,Xml,Jaxb,Xsd,我有一个接受数字的xml元素。这是可选的。我创建了JAXB POJO类,相同的标记映射到Java中的一个int变量。现在,由于xml元素是可选的,用户可能根本不会设置它,这会将相应的java变量设置为0。 在某些情况下,用户可以设置它并发送0。同样,java变量将被设置为0。 我想知道是否有一种方法可以通过编程区分这两种场景。 谢谢简短的回答 对于可选的XML元素,必须在其上设置minOccurs=0属性 <xs:element name="foo" type="int" minOccur

我有一个接受数字的xml元素。这是可选的。我创建了JAXB POJO类,相同的标记映射到Java中的一个int变量。现在,由于xml元素是可选的,用户可能根本不会设置它,这会将相应的java变量设置为0。 在某些情况下,用户可以设置它并发送0。同样,java变量将被设置为0。 我想知道是否有一种方法可以通过编程区分这两种场景。 谢谢

简短的回答 对于可选的XML元素,必须在其上设置minOccurs=0属性

<xs:element name="foo" type="int" minOccurs="0"/>
生成模型

在生成的模型中,我们看到为必需属性生成了int类型的属性,为可选属性生成了Integer类型的属性

import javax.xml.bind.annotation.*;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {"required","optional"})
public class Foo {

    protected int required;
    protected Integer optional;

    public int getRequired() {
        return required;
    }

    public void setRequired(int value) {
        this.required = value;
    }

    public Integer getOptional() {
        return optional;
    }

    public void setOptional(Integer value) {
        this.optional = value;
    }

}

对不起,布莱斯。我想我还不够清楚。首先,我说的是一个可选标记。用户可以设置,也可以不设置。如果不是,它将在java变量中设置为0。如果用户将其设置为0,则为0。我想知道的是在解析xml时如何区分两者。例如,如果用户没有设置,即使值为0,我也不会发出警报。如果显式设置为0,我想发出警报。“我希望我说清楚了。”@Aceghn-我想我理解你的问题。您可以将属性或生成设置为一个整数,当它不在文档中时,它将为null,否则它将有一个值。在Java中,可以将整数视为int。只需确保首先对其进行null检查。
import javax.xml.bind.annotation.*;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {"required","optional"})
public class Foo {

    protected int required;
    protected Integer optional;

    public int getRequired() {
        return required;
    }

    public void setRequired(int value) {
        this.required = value;
    }

    public Integer getOptional() {
        return optional;
    }

    public void setOptional(Integer value) {
        this.optional = value;
    }

}