XStream 别名与以前文件内容结构的兼容性
XStream Alias Compatibility With Previous Files Content Structure
我面临以下问题:
我有一个使用 XSTream 自动创建的文件,可以正确写入和读取。
我的问题是我想将 class (InstallationUser) 从一个包移动到另一个包,但这会在 XStream:
上创建解析异常
com.thoughtworks.xstream.converters.ConversionException:
myproject.data.clientconfiguration.InstallationUser :
myproject.data.clientconfiguration.InstallationUser
---- Debugging information ---- message : myproject.data.clientconfiguration.InstallationUser cause-exception
: com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message :
myproject.data.clientconfiguration.InstallationUser class
: java.util.TreeMap required-type : java.util.TreeMap
converter-type :
com.thoughtworks.xstream.converters.collections.TreeMapConverter path
:
/CLIENT_CONFIGURATION/network/NETWORK/users/entry/myproject.data.clientconfiguration.InstallationUser
class[1] :
myproject.data.clientconfiguration.InstallationDetails
converter-type[1] :
com.thoughtworks.xstream.converters.reflection.ReflectionConverter
class[2] : java.util.Vector converter-type[2] :
com.thoughtworks.xstream.converters.collections.CollectionConverter
class[3] :
myproject.data.clientconfiguration.ClientConfiguration version
: null
在那之后,我正在加载的数据丢失了。
我猜这是我的错,因为我之前没有为这个 class 创建别名。
我检查过,如果我没有将 class 从一个包裹移动到另一个包裹,它可以正常工作。
所以,我想知道是否有某种方法可以告知 XStream 解析器,之前的 class:
myproject.data.clientconfiguration.InstallationUser
现在可以:
myproject.data.clientconfiguration.newpackage.InstallationUser
提前感谢您的帮助
设置别名以匹配您的旧 class 名称,您可以将 class 移动到您想要的任何包。
XStream xstream = new XStream();
xstream.alias("myproject.data.clientconfiguration.InstallationUser", InstallationUser.class);
我面临以下问题: 我有一个使用 XSTream 自动创建的文件,可以正确写入和读取。
我的问题是我想将 class (InstallationUser) 从一个包移动到另一个包,但这会在 XStream:
上创建解析异常com.thoughtworks.xstream.converters.ConversionException: myproject.data.clientconfiguration.InstallationUser : myproject.data.clientconfiguration.InstallationUser ---- Debugging information ---- message : myproject.data.clientconfiguration.InstallationUser cause-exception
: com.thoughtworks.xstream.mapper.CannotResolveClassException cause-message : myproject.data.clientconfiguration.InstallationUser class
: java.util.TreeMap required-type : java.util.TreeMap converter-type : com.thoughtworks.xstream.converters.collections.TreeMapConverter path : /CLIENT_CONFIGURATION/network/NETWORK/users/entry/myproject.data.clientconfiguration.InstallationUser class[1] : myproject.data.clientconfiguration.InstallationDetails converter-type[1] : com.thoughtworks.xstream.converters.reflection.ReflectionConverter class[2] : java.util.Vector converter-type[2] : com.thoughtworks.xstream.converters.collections.CollectionConverter class[3] : myproject.data.clientconfiguration.ClientConfiguration version
: null
在那之后,我正在加载的数据丢失了。
我猜这是我的错,因为我之前没有为这个 class 创建别名。
我检查过,如果我没有将 class 从一个包裹移动到另一个包裹,它可以正常工作。
所以,我想知道是否有某种方法可以告知 XStream 解析器,之前的 class:
myproject.data.clientconfiguration.InstallationUser
现在可以:
myproject.data.clientconfiguration.newpackage.InstallationUser
提前感谢您的帮助
设置别名以匹配您的旧 class 名称,您可以将 class 移动到您想要的任何包。
XStream xstream = new XStream();
xstream.alias("myproject.data.clientconfiguration.InstallationUser", InstallationUser.class);