Java JaxB生成,如何从我的xsd获取bigDecimal?

spa*_*kus 8 java xml xsd jaxb bigdecimal

我有一个xsd注释,我试图让Marshal成为一个java对象.我希望java最终得到BigDecimal的价值.我在xsd中输入什么才能使它成功?我正在使用xjc ant任务

<xjc schema="my.xsd" destdir="generated" header="false" extension="true" />
Run Code Online (Sandbox Code Playgroud)

这是相关的xsd -

<complexType name="Size">
    <attribute name="height" type="BigDecimal"></attribute> <!-- this is wrong-->
</complexType>
Run Code Online (Sandbox Code Playgroud)

我想为生成的类最终得到这个 -

public class Size { 
@XmlAttribute(name = "height")
    protected BigDecimal height;
}
Run Code Online (Sandbox Code Playgroud)

bdo*_*han 8

JAXB(JSR-222)实施将产生java.math.BigDecimaldecimal类型(见表6-1中JAXB 2.2规范).

XML Schema(schema.xsd)

<?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>
Run Code Online (Sandbox Code Playgroud)

XJC电话

xjc schema.xsd
Run Code Online (Sandbox Code Playgroud)

Java模型(Foo)

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;

    ...

}
Run Code Online (Sandbox Code Playgroud)