我正在使用http://simple.sourceforge.net/中的简单xml框架。如何格式化日期或双精度值?我看到了一个名为transform的函数,但是如何在 class 中将其应用于所有double和date字段?

最佳答案

我可以想到两种方法来做到这一点。

第一:

您可以实现自己的 Matcher 。您可以在创建它时将其传递给 Persister 。您的Matcher只需要为您感兴趣的类型返回Transform。默认类型将尝试您的自定义Matcher不匹配的任何类型。您可能必须看一下源代码,并看看如何实现DateTransformFloatTransform。它们很短,因此完全可行。仅当您要以特定方式转换所有类型时,此解决方案才有用。

第二:

创建一个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);
}

这种方法有点像骇客,但在特定情况下只需要覆盖默认序列化时,它很有用。如果必须对特定类型的每个实例执行此操作,则可能会变得笨拙。在这种情况下,我将使用第一种方法。

10-05 18:03