我有以下问题:
我已将java.util.Date
转换为XMLGregorianCalendar
,输出格式如下:
2016-03-15T20:43:45.776+01:00
相反,我需要:
2015-10-31T14:35:01,905+01:00
那么有关如何以程序方式将.
更改为,
的任何建议?
字符串替换不是一个选项,因为我需要进一步传递XMLGregorianCalendar
对象。
非常感谢任何帮助。
答案 0 :(得分:0)
ISO-8601 - 论文作出以下声明:
4.2.2.4带小数的表示
[...]如果包含小数部分,则低阶时间元素(如果有) 应省略,小数部分应除以 ISO 31-0中指定的小数符号的整数部分,即逗号 [,]或句号[。]。其中,逗号是首选标志。[...]
但 XML-Schema 表示(作为偏差)在其内置时间相关类型的任何词汇表示中只允许使用点(例如:xs:datetime或{{3} })。并且Java类XMLGregorianCalendar
仅对内置类型进行建模,因此不允许逗号作为十进制符号。此语句还受方法DatatypeFactory.newXMLGregorianCalendar(String lexicalRepresentation)
的{{3}}支持,该方法指向XML-Schema 1.0中的适当位置。
因此,如果您的Web服务需要逗号(但它也应该能够根据ISO-8601处理点),那么您不能使用XMLGregorianCalendar
但必须使用自己的解决方案,并且可能使用XML中的自定义用户类型。 我个人认为这个点应该是可能的。