首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java生成,如何从我的JaxB获取bigDecimal?

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

Stack Overflow用户
提问于 2013-07-24 07:58:47
回答 2查看 9.4K关注 0票数 9

我有一个xsd注释,我正试图将它编组到一个java对象中。我希望java以BigDecimal作为其值的结尾。我要在xsd中输入什么才能让它做到这一点?我正在使用一个xjc ant任务。

代码语言:javascript
复制
<xjc schema="my.xsd" destdir="generated" header="false" extension="true" />

下面是相关的xsd -

代码语言:javascript
复制
<complexType name="Size">
    <attribute name="height" type="BigDecimal"></attribute> <!-- this is wrong-->
</complexType>

我想为生成的类做个总结-

代码语言:javascript
复制
public class Size { 
@XmlAttribute(name = "height")
    protected BigDecimal height;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-24 09:41:06

JAXB (JSR-222)实现将从decimal类型生成java.math.BigDecimal (请参见JAXB2.2规范中的表6-1 )。

XML架构(schema.xsd)

代码语言:javascript
复制
<?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调用

代码语言:javascript
复制
xjc schema.xsd

Java Model (Foo)

代码语言:javascript
复制
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;

    ...

}
票数 9
EN

Stack Overflow用户

发布于 2013-07-24 08:47:22

我想通了。答案是使用binding.xjb类

绑定=

代码语言:javascript
复制
<jxb:javaType 
     name="java.math.BigDecimal" 
     xmlType="xs:decimal"/>

蚂蚁-

代码语言:javascript
复制
<xjc schema="my.xsd" destdir="generated" binding="myBinding.xjb" header="false" extension="true" />

xsd =

代码语言:javascript
复制
<attribute name="height" type="decimal"></attribute>

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17822990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档