У меня есть два класса:
@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,Я установил тип latitude
и longitude
в xsd: десятичное, но валидатор жалуется, что
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>
Я думаю, что лучшим решением было бы усечение значений lat / long, так как нет смысла иметь такую высокую точность в первую очередь.
Как мне поручить JAXB делатьчто?