我有一个xml元素,它接受一个数字。这是可选的。我创建了JAXB POJO类,并且相同的标记映射到Java中的int变量。现在,由于xml元素是可选的,用户可能根本不设置它,这会将相应的java变量设置为0。 在某些情况下,用户可以设置它并发送0.再次,java变量将设置为0。 我想知道是否有办法以编程方式区分这两种情况。 谢谢
答案 0 :(得分:0)
要使XML元素可选,必须在其上设置minOccurs="0"
属性。
<xs:element name="foo" type="int" minOccurs="0"/>
JAXB会创建一个Integer
类型的属性来匹配您的用例。
XML架构
复杂类型foo
有两个int
类型的元素。一个是必需的,另一个是可选的(minOccurs="1"
)。
<?xml version="1.0" encoding="UTF-8"?>
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/schema"
xmlns:tns="http://www.example.org/schema"
elementFormDefault="qualified">
<complexType name="foo">
<sequence>
<element name="required" type="int"/>
<element name="optional" type="int" minOccurs="0"/>
</sequence>
</complexType>
</schema>
生成的模型
在生成的模型中,我们看到为所需属性生成了类型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;
}
}