繁体   English   中英

用逗号作为小数点分隔符的数字的Jaxb转换

[英]Jaxb conversion of number with comma as a decimal separator

我正在使用Jaxb解析xml。 在xml文件中,我具有如下定义的项目列表:

<item>
   <currency_name>US Dollar</currency_code>
   <currency_code>USD</currency_code>
   <rate>3,0223</rate>
</item>

当我将xsd文件放入以下行时:

<xsd:element name="rate" type="xsd:string" minOccurs="1" maxOccurs="1"/>

我得到30233作为字符串值,但是当我输入时:

<xsd:element name="rate" type="xsd:double/BigDecimal/float" minOccurs="1" maxOccurs="1"/>

然后我收到0.0 / null。 我认为问题出在“,”分隔符中。 如何将值解编为BigDecimal?

如果要通过XML Schema生成模型,则可以使用以下方法来为您的用例生成XmlAdapter

格式化对象

您将需要使用可将字符串转换为BigDecimal方法来创建一个类。

public class BigDecimalFormatter {

    public static String printBigDecimal(BigDecimal value) {
        // TODO - Conversion logic
    }

    public static BigDecimal parseBigDecimal(String value) {
        // TODO - Conversion logic
    }

}

外部绑定文档(bindings.xml)

外部绑定文档用于指定将XML字符串转换为BigDecimal属性或从BigDecimal属性转换XML字符串时应使用自定义转换类。

<jxb:bindings xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb" version="2.1">
    <jxb:bindings schemaLocation="schema.xsd">
        <jxb:bindings node="//xs:element[@name='rate']">
            <jxb:property>
                <jxb:baseType>
                    <jxb:javaType name="java.math.BigDecimal"
                        parseMethod="forum20711223.BigDecimalFormatter.parseBigDecimal" printMethod="forum20711223.BigDecimalFormatter.printBigDecimal" />
                </jxb:baseType>
            </jxb:property>
        </jxb:bindings>
    </jxb:bindings>
</jxb:bindings>

XJC电话

-b标志用于引用外部绑定文档。

xjc -b binding.xml schema.xsd

完整的例子

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM