【问题标题】:How to attach a XStream converter just for a certain element?如何仅为某个元素附加 XStream 转换器?
【发布时间】:2023-08-09 09:04:01
【问题描述】:

为某种类型设置转换器很容易(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 没有任何注释。

【问题讨论】:

    标签: java xml xstream


    【解决方案1】:

    使用registerLocalConverter() 代替registerConverter()

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

    【讨论】: