java - 使用简单的 xml 持久化对象时如何格式化日期或 double 值

标签 java android

我正在使用来自 http://simple.sourceforge.net/ 的简单 xml 框架.我如何格式化日期或 double 值?我看到一个名为 transform 的函数,但如何在我的类中应用它的所有 double 和日期字段?

最佳答案

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

首先:

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

第二个:

创建一个 String 元素来保存序列化数据。

@Element(name = "myelement")
private String strMyElement;

private MyElementType myElement;

然后使用@Persist 和@Validate 注解 Hook 到序列化过程中。

@Persist
private void persist() {
  strMyElement = myElement.toString();
}

@Validate
private void validate() {
  myElement = myElement.fromString(strMyElement);
}

这种方式更像是一种 hack,但当您只需要在特定情况下覆盖默认序列化时,它很有用。如果您必须为特定类型的每个实例都这样做,它可能会变得笨拙。在那种情况下,我会使用第一种方法。

关于java - 使用简单的 xml 持久化对象时如何格式化日期或 double 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3456759/

相关文章:

android - 按钮监听器在首选项 fragment 中不起作用

android - 激活 gps 提示 phonegap 应用程序

java - Android Onclick优先级: ListView or ImageView in ListView?

android - 将图标添加到上下文列表中的菜单项

javascript - Apache Cordova - 混合移动应用程序页面像 Chrome 浏览器一样打开,而不像 cordova 应用程序

Java 8 Stream.collect() 的通用使用

java - CsrfGuard 出现问题。尽管从官方网站进行了配置,csrf 仍抛出问题

java - 通过创建方法来比较两个对象

java - findViewById 使用 OnClickListener 接口(interface)的 OnClick 方法的参数返回 null

java - ObjectOutputStream 需要服务器响应吗?