Xstream和使用保留关键字作为XML属性的解决方法。 (“类”)

时间:2013-12-22 23:47:34

标签: java xml xstream

我正在尝试使用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模式可能会起作用,但在我的情况下却没有。

1 个答案:

答案 0 :(得分:1)

我通过添加:

解决了这个问题
xstream.aliasSystemAttribute("", "class");

我不知道它为什么会起作用,但它确实有效。无论如何,谢谢:)