当前位置: 首页 > 知识库问答 >
问题:

XStream反序列化simple XML时,当它应该创建一个集合时,却总是错误地说没有这样的字段

何涵畅
2023-03-14

正在尝试将以下xml转换为java对象...

<?xml version="1.0" encoding="utf-8"?>
<layertypes>
  <layertype id="layer_1" label="first" />
  <layertype id="layer_2" label="Second" />
</layertypes>
@XStreamAlias("layertype")
public class LayerType {

    @XStreamAsAttribute
    private String id;

    @XStreamAsAttribute
    private String label;

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getLabel() {
        return label;
    }
    public void setLabel(String label) {
        this.label = label;
    }
}
@XStreamAlias("layertypes")
public class LayerTypes {

    @XStreamImplicit(itemFieldName = "layertype")
    private List<LayerType> layertypes = new ArrayList<>();
    public List<LayerType> getLayertypes() {
        return layertypes;
    }
    public void setLayertypes(List<LayerType> layertypes) {
        this.layertypes = layertypes;
    }
}
        XStream xstream = new XStream();
        xstream.processAnnotations(LayerType.class);
        xstream.processAnnotations(LayerTypes.class);
        LayerTypes layerTypes = (LayerTypes) xstream.fromXML(inputStream);

我得到的是:

com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$UnknownFieldException: No such field xbeans.LayerTypes.layertype
---- Debugging information ----
message             : No such field  xbeans.LayerTypes.layertype
field               : layertype
class               : xbeans.LayerTypes
required-type       : xbeans.LayerTypes
converter-type      : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
path                : /layertypes/layertype
line number         : 3
version             : 1.4.15
-------------------------------

知道我做错了什么吗?逐步执行调试器,这就像Xstream找不到或没有隐式集合的映射器一样。这似乎应该是如此简单,我已经尝试遵循所有的教程,我找到。但总是这个错误。

共有1个答案

毋胜涝
2023-03-14

好吧...我没做错什么。Spring Boot Dev Tools是如何打破它的。在Spring上下文中使用XStream时出错:DuplicateFieldException

相似的问题不同的例外(尽管两个例外都是不相关的和误导的)。

 类似资料: