我目前遇到一个问题,我们连接的系统期望接收 XML,其中包含三个格式化为小数点后一位的双精度字段。就我个人而言,我认为我们的系统应该能够以默认格式发送值,然后由其他系统根据需要格式化自己的表示形式,但可惜这似乎不是一个选项。
我的基于 Java 的系统当前正在通过使用 XStream 将对象转换为 XML。我们有一个伴随 XML 的 XSD,并将各种元素定义为字符串、双精度、日期时间等。
我有三个双精度字段,其中包含 12.5、100.123、5.23445 等值。现在它们几乎按原样转换为 XML。我需要将这些值在 XML 中格式化为小数点后一位; 12.5、100.1、5.2 等
我简要地想出了实现这一目标的选项:
- 在将这些值传送到 XML 之前,Java 会以某种方式将这些值格式化为这种精度。也许 NumberFormat 可以做到这一点,尽管我认为这主要用于字符串输出。
- 希望XSD能为我做这件事;我知道您可以在 XSD 中对精度进行限制,但我不确定它是否实际处理舍入本身,或者只是说“123.123 的值对此模式无效”?
- 使用 XSLT 以某种方式为我完成此任务。
我想请大家集思广益,看看在这种情况下使用什么是“可接受的”方式/最佳实践。
谢谢,
戴夫.
XStream 有转换器 http://x-stream.github.io/converters.html (tutorial http://x-stream.github.io/converter-tutorial.html)。您必须注册自己的 Double 转换器来处理此问题。在转换器中使用DecimalFormat http://download.oracle.com/javase/6/docs/api/java/text/DecimalFormat.html限制小数位数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)