Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JaxB一代,如何从xsd中获取一个大十进制数?_Java_Xml_Jaxb_Xsd_Bigdecimal - Fatal编程技术网

Java JaxB一代,如何从xsd中获取一个大十进制数?

Java JaxB一代,如何从xsd中获取一个大十进制数?,java,xml,jaxb,xsd,bigdecimal,Java,Xml,Jaxb,Xsd,Bigdecimal,我有一个xsd注释,我正试图将其封送到java对象中。我希望java以BigDecimal作为其值的结尾。我应该在xsd中输入什么使它这样做?我正在使用xjc ant任务 <xjc schema="my.xsd" destdir="generated" header="false" extension="true" /> 我明白了。答案是使用binding.xjb类 绑定= <jxb:javaType name="java.math.BigDecimal"

我有一个xsd注释,我正试图将其封送到java对象中。我希望java以BigDecimal作为其值的结尾。我应该在xsd中输入什么使它这样做?我正在使用xjc ant任务

<xjc schema="my.xsd" destdir="generated" header="false" extension="true" />

我明白了。答案是使用binding.xjb类

绑定=

<jxb:javaType 
     name="java.math.BigDecimal" 
     xmlType="xs:decimal"/>

蚂蚁

<xjc schema="my.xsd" destdir="generated" binding="myBinding.xjb" header="false" extension="true" />

xsd=

<attribute name="height" type="decimal"></attribute>

这意味着任何标记为类型decimal的东西都将变成一个大的十进制,但在我的例子中,这是可以的。希望这对其他人有所帮助。

实现将从
decimal
类型生成
java.math.BigDecimal
(参见 JAXB 2.2规范)

XMLSchema(Schema.xsd)

Java模型(Foo)


JAXB实现将为
xs:decimal
类型创建
java.math.BigDecimal
属性,不需要绑定文件:我刚刚测试了这个属性,@BlaiseDoughan是正确的。我确实仔细考虑过这件事。谢谢
<xjc schema="my.xsd" destdir="generated" binding="myBinding.xjb" header="false" extension="true" />
<attribute name="height" type="decimal"></attribute>
<?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">

    <element name="foo">
        <complexType>
            <sequence>
                <element name="bar" type="decimal"/>
            </sequence>
        </complexType>
    </element>

</schema>
xjc schema.xsd
package org.example.schema;

import java.math.BigDecimal;
import javax.xml.bind.annotation.*;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {"bar"})
@XmlRootElement(name = "foo")
public class Foo {

    @XmlElement(required = true)
    protected BigDecimal bar;

    ...

}