我正在使用http://simple.sourceforge.net/中的简单xml框架。如何格式化日期或双精度值?我看到了一个名为transform的函数,但是如何在 class 中将其应用于所有double和date字段?
最佳答案
我可以想到两种方法来做到这一点。
第一:
您可以实现自己的 Matcher
。您可以在创建它时将其传递给 Persister
。您的Matcher
只需要为您感兴趣的类型返回Transform
。默认类型将尝试您的自定义Matcher
不匹配的任何类型。您可能必须看一下源代码,并看看如何实现DateTransform
和FloatTransform
。它们很短,因此完全可行。仅当您要以特定方式转换所有类型时,此解决方案才有用。
第二:
创建一个String
元素来保存序列化的数据。
@Element(name = "myelement")
private String strMyElement;
private MyElementType myElement;
然后使用@Persist和@Validate批注连接到序列化过程。
@Persist
private void persist() {
strMyElement = myElement.toString();
}
@Validate
private void validate() {
myElement = myElement.fromString(strMyElement);
}
这种方法有点像骇客,但在特定情况下只需要覆盖默认序列化时,它很有用。如果必须对特定类型的每个实例执行此操作,则可能会变得笨拙。在这种情况下,我将使用第一种方法。