java - Jaxb 中 int 变量的用法

标签 java xml jaxb xsd

我有一个接受数字的 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/

相关文章:

java - 使用 ng-file-upload 和 Spring Boot 上传文件

service - JAXB 在基于 Java 的 Web 服务中的作用

java - 使用 Java 并发读取大文件 (2GB) 并写入另一个文件

java - 使用 ExtJS 6 拖放文件

c# 序列化嵌套类

java - 如何在 java 中查找 xml 中缺少的属性

sql - 在 SQL 中选择所有 XML 属性

java - 从 Camel 从 2.20.4 升级到 2.21.2 或 2.22.1 后,Apache Camel JAXB 解码返回空属性

java - 向 JAXB 元素添加属性

java - BigDecimal movePointRight 和 scaleByPowerOfTen 有什么区别?