簡體   English   中英

Java JaxB生成,如何從我的xsd獲取bigDecimal?

[英]Java JaxB generation, How do I get a bigDecimal from my xsd?

我有一個xsd注釋,我試圖讓Marshal成為一個java對象。 我希望java最終得到BigDecimal的價值。 我在xsd中輸入什么才能使它成功? 我正在使用xjc ant任務

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

這是相關的xsd -

<complexType name="Size">
    <attribute name="height" type="BigDecimal"></attribute> <!-- this is wrong-->
</complexType>

我想為生成的類最終得到這個 -

public class Size { 
@XmlAttribute(name = "height")
    protected BigDecimal height;
}

JAXB(JSR-222)實現將從decimal類型生成java.math.BigDecimal (請參閱JAXB 2.2規范中的表6-1)。

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>

XJC電話

xjc schema.xsd

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;

    ...

}

我想通了。 答案是使用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>

這意味着標記為十進制類型的任何內容都會變成一個大小數,但在我的情況下,這是正常的。 希望這有助於其他人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM