[英]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.