![](/img/trans.png)
[英]Generation of XSD restrictions in a schema generated from Java JAXB annotated classes
[英]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.