Java 需要可为空的双精度值

Java 需要可为空的双精度值,java,xml,xsd,jaxb,Java,Xml,Xsd,Jaxb,我将xsd模式与元素数据类型double一起使用,如下所示: <xsd:element name="value" type="xsd:double"/> protected double value; 现在,xml数据能够发送可为null的值元素,但我无法将xsd模式适合于数据类型Double.class。是否可以覆盖java类中的属性?如果无法修改XML模式以使value元素为nillable,则可以使用JAXB外部绑定文件执行以下操作: 外部绑定文件(binding.xml)

我将xsd模式与元素数据类型
double
一起使用,如下所示:

<xsd:element name="value" type="xsd:double"/>
protected double value;

现在,xml数据能够发送可为null的值元素,但我无法将xsd模式适合于数据类型Double.class。是否可以覆盖java类中的属性?

如果无法修改XML模式以使value元素为nillable,则可以使用JAXB外部绑定文件执行以下操作:

外部绑定文件(binding.xml)

可以使用如下所示的外部绑定文件:

<jaxb:bindings 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
    xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
    jaxb:extensionBindingPrefixes="xjc"
    version="2.1">
    <jaxb:bindings schemaLocation="double.xsd">
        <jaxb:bindings node="//xs:element[@name='value']">
            <jaxb:property>
                <jaxb:baseType name="java.lang.Double"/>
            </jaxb:property>
      </jaxb:bindings>
   </jaxb:bindings>
</jaxb:bindings>
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Root">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="value" type="xs:double"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>
生成的类

package generated;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {"value"})
@XmlRootElement(name = "Root")
public class Root {

    @XmlElement(required = true, type = Double.class)
    protected Double value;

    public Double getValue() {
        return value;
    }

    public void setValue(Double value) {
        this.value = value;
    }

}

如果发送了可为零的元素,那么架构实际上应该是:

<xsd:element name="value" type="xsd:double" nillable="true" />


那么JAXB应该使用
Double
而不是
Double

谢谢您提供的信息。我想,我得跟客户谈谈;)
<xsd:element name="value" type="xsd:double" nillable="true" />