java - 通用列表上的 XStream 异常

标签 java xml generics xstream oxm

使用 XStream 1.4.4。

我有以下 XML:

<app name="MyApp">
    <properties>
        <property name="fizz" value="buzz" />
        <property name="foo" value="bar" />
    </properties>

    <fruit type="apple" />

    <!-- ...etc. -->
</app>

以及属性列表的相应 POJO,以及属性本身:

@XStreamAlias("properties")
public class Properties {
    private List<Property> properties = new ArrayList<Property>();

    public List<Property> getProperties() {
        return properties;
    }

    public void setProperties(List<Property> properties) {
        this.properties = properties;
    }
}

@XStreamAlias("property")
public class Property {
    private String name = null;

    private String value = null;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}

当我尝试运行以下代码时:

XStream xs = new XStream();
Strnig xml = getXML(); // Fetches the string of XML from above
App app = (App)xs.fromXML(xml);

我得到:

Exception in thread "main" com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$UnknownFieldException: No such field com.me.myapp.Properties.property
---- Debugging information ----
field               : property
class               : com.me.myapp.Properties
required-type       : com.me.myapp.Properties
converter-type      : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
path                : /app/properties/property
line number         : 4
class[1]            : com.me.myapp.App
version             : null
-------------------------------
    at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.determineType(AbstractReflectionConverter.java:453)
    at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:294)
    ...rest of stack trace omitted for brevity

我哪里错了?

最佳答案

您根本不需要注释。只需使用别名 Property.class 作为“属性”,XStream 将为您处理所有其他事情。

关于java - 通用列表上的 XStream 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17348853/

相关文章:

c# - 更新对象的通用方法错误( Entity Framework 4)

Swift - 泛型函数

java - JSF 是一个框架还是一个 API?

java - UnmarshallerHandler 相对于 Unmarshaller 有什么优势

java - 验证金额应为整数类型的方法返回类型

c# - XmlDocument.LoadXml() 抛出 ComException 类型的异常

xml - Qt XML 序列化/反序列化到 Q_PROPERTY

java - 基本泛型方法以及如何从非泛型类调用方法?

java - 从另一个类调用方法时遇到问题

java - 如何在接口(interface)实例中调用super方法?