我正在尝试使用XStream将这样的XML读取到对象:
<behavior id="id384781" class="ChangeAttributeAction" enabled="true">
<attributes>
<text id="name">Change Attribute</text>
<text id="bundleName">ChangeAttribute.behavior</text>
<text id="targetAttribute">game.devices.touches.touch1.y</text>
<text id="RHS">
<expression>
<string>acos(x)</string>
</expression>
</text>
</attributes>
</behavior>
除了class="ChangeAttributeAction"
部分之外,一切正常。
我的行为类:
@XStreamAlias("class")
@XStreamAsAttribute
String classAtt = "";
即使很难对字段名称进行别名,也会出错:
线程“main”中的异常com.thoughtworks.xstream.converters.ConversionException: ChangeAttributeAction:ChangeAttributeAction
----调试信息----
消息:ChangeAttributeAction
cause-exception :com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message :ChangeAttributeAction
类:projectmerger1.Behaviors
必需类型:projectmerger1.Behaviors
converter-type :com.thoughtworks.xstream.converters.reflection.ReflectionConverter
它曾经以某种方式工作,但现在却没有。我以前用不同的方式处理对象,但是我无法找到实现这一点的不同之处。另外根据我的研究 - &gt; link&lt; - 我了解到尝试NO_REFERENCE模式可能会起作用,但在我的情况下却没有。
答案 0 :(得分:1)
我通过添加:
解决了这个问题xstream.aliasSystemAttribute("", "class");
我不知道它为什么会起作用,但它确实有效。无论如何,谢谢:)