gpt4 book ai didi

java - 需要可为空的 double 值

转载 作者:数据小太阳 更新时间:2023-10-29 02:11:22 26 4
gpt4 key购买 nike

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

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

我使用 jaxB unmarschaller 创建一个具有适当对象和属性的 java 类。结果如下所示:

protected double value;

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

最佳答案

如果您无法修改 XML 架构以使值元素可为 nillable,那么您可以使用 JAXB 外部绑定(bind)文件执行以下操作:

外部绑定(bind)文件 (binding.xml)

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

<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 架构 - double.xsd

上述绑定(bind)文件适用于如下所示的 XML 模式:

<?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>

新江西来电

xjc -d out -b binding.xml double.xsd

生成类

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;
}

}

关于java - 需要可为空的 double 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7927428/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com