gpt4 book ai didi

xsd - 如何告诉 jaxb 在编码到 xml 时截断 BigDecimal?

转载 作者:行者123 更新时间:2023-12-04 22:38:42 26 4
gpt4 key购买 nike

我有这两个类:

@XmlAccessorType(XmlAccessType.FIELD)
public class OpportunityLocation
{

@XmlElement
private LatitudeLongitude coordinates;
[...]
}

public class LatitudeLongitude implements Serializable
{
private BigDecimal latitude;
private BigDecimal longitude;
[...]
}

OpportunityLocation 被序列化时,我得到

<location>
[...]
<coordinates>
<latitude>51.53684899999999657893567928113043308258056640625</latitude>
<longitude>-0.1325880000000000114024345521102077327668666839599609375</longitude>
</coordinates>

现在我被要求提供一个 xsd 来验证 xml,我将 latitudelongitude 的类型设置为 xsd:decimal 但验证器提示说

 Element 'latitude': '51.53684899999999657893567928113043308258056640625' is not a valid value of the atomic type 'xs:decimal'.

(经度相同)

描述坐标的xsd片段是

<xs:complexType name="latitudeLongitude">
<xs:all>
<xs:element name="latitude" type="xs:decimal"/>
<xs:element name="longitude" type="xs:decimal"/>
</xs:all>
</xs:complexType>

我认为最好的解决方案是截断纬度/经度值,因为一开始就没有必要拥有那么高的精度。

如何指示 JAXB 执行此操作?

最佳答案

或者简单地使用 BigDecimal.setScale()。如果适用于您的情况,则不需要 XmlAdapter。

BigDecimal bd = new BigDecimal((double) 1.2345);
bd = bd.setScale(2, RoundingMode.HALF_UP);

关于xsd - 如何告诉 jaxb 在编码到 xml 时截断 BigDecimal?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7498044/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com