如何仅为某个元素附加 XStream 转换器?

Posted

技术标签:

【中文标题】如何仅为某个元素附加 XStream 转换器?【英文标题】:How to attach a XStream converter just for a certain element? 【发布时间】:2011-03-23 21:48:22 【问题描述】:

为某种类型设置转换器很容易(http://x-stream.github.io/javadoc/com/thoughtworks/xstream/XStream.html 举个例子):

xstream.registerConverter(new SqlTimestampConverter());
xstream.registerConverter(new DynamicProxyConverter());

我想注册一个转换器,但使用不同的元素名称。 Converter 接口不提供元素的名称。

例如:如果元素名称(属性名称)在<longDate> 中,则日期应转换为详细字符串,但如果在<shortDate> 中则短。如何根据属性名称添加不同的转换器?像 xstream.registerConverter(Class classtype, propertyname, converter) 这样的东西不存在,但会很好。

我知道我可以使用 PrettyPrintWriter 的专用版本,但这似乎对这个简单的工作很有用。还有其他想法吗?

顺便说一句:我可以使用注释 @XStreamConverter(XXX.class) 但我不想使用注释。我希望我的 bean 没有任何注释。

【问题讨论】:

【参考方案1】:

使用registerLocalConverter() 代替registerConverter()

xstream.registerLocalConverter( MyClazz.class, "property", new MyConverter() );

【讨论】:

以上是关于如何仅为某个元素附加 XStream 转换器?的主要内容,如果未能解决你的问题,请参考以下文章

xStream完美转换XMLJSON

xStream完美转换XMLJSON(转)

在 Java 中使用 xstream 转换为 xml 时如何避免大双精度数的科学记数法

xStream转换xml同名节点到java对象问题

XStream解析XML文本并用反射机制转换为对象

XStream(xml/bean转换)