我有一个接受数字的 xml 元素。这是可选的。我创建了 JAXB POJO 类,并将相同的标记映射到 Java 中的 int 变量。现在,由于 xml 元素是可选的,用户可能根本不设置它,这会将相应的 java 变量设置为 0。 在某些情况下,用户可以设置它并发送 0。同样,java 变量将设置为 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;
}
}
关于java - Jaxb 中 int 变量的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23792514/