【问题标题】:com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$DuplicateFieldException: Duplicate fieldcom.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$DuplicateFieldException:重复字段
【发布时间】:2014-02-13 22:31:45
【问题描述】:
field               : param
class               : xmleditor.domain.Type
required-type       : xmleditor.domain.Type
converter-type      : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
path                : /root/type/param[2]

我得到这个错误,我得到了重复的参数。但是当我尝试使用时

xstream.addImplicitCollection

我得到这个错误:

Exception in thread "main" com.thoughtworks.xstream.InitializationException: Field "param" declares no collection or array.

所以我真的不知道我的问题是什么。

 @XStreamAlias("root")
    public class Type {

        private Info info;
        @XStreamAlias("OBJECT_TYPE")
        private String objectType;
        private Properties prop;
        private Parameters param;
        private Restrictions restri;

        @XStreamImplicit(itemFieldName = "type")
        private List typeList = new ArrayList();
// Constructor, Getters and setters.

这个问题的原因可能是什么?

【问题讨论】:

    标签: java xml xstream


    【解决方案1】:

    声明一个隐式集合意味着您的 xml 文档中有多个具有相同标签名称的 xml 元素,位于同一嵌套级别。

    要将这些映射到您的 Java 类,您需要一个 Collection 或一个数组来存储这些对象。XStream 可以通过将这些元素作为隐式集合映射到您的对象结构来处理这个问题。

    因此,您需要将 param 变量更改为 Collection 或 Array 类型。也就是改变

    来自:

    private Parameters param;
    

    到:

    @XStreamImplicit
    private List<Parameters> param;
    

    【讨论】:

    • Aight 消除了异常,但我现在得到了另一个。感觉我的整个结构有些错误。消息:无法设置字段类 xmleditor.domain.Type.type:空原因-异常:com.thoughtworks.xstream.converters.reflection.ObjectAccessException
    • @Sembrano 你有数据结构的 XSD 吗?如果是,您可能想看看 JAXB 用于将 XML 数据映射到 java 对象。对于还没有类的复杂数据结构,这可能是更好的方法。如果您没有 XSD,请显示整个文件,我们将了解如何通过 XStream 或其他方式映射它。
    • 是的,这是一个 xsd,但我并没有真正使用它。也许我应该?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多