Java XStream - 是否可以忽略在别名

时间:2016-03-30 21:06:24

标签: java xstream

在将此问题标记为重复之前,请仔细阅读。我的问题与SO上的很多问题都不相似。

我正在使用XStream,如下所示:

import com.thoughtworks.xstream.annotations.XStreamAlias;

@XStreamAlias("square")
public class Square {
    @XStreamAlias("size")
    int size;

    public int getSize() {
        return size;
    }

    @Override
    public String toString() {
        return "Square [size=" + size + "]";
    }

    public void setSize(int size) {
        this.size = size;
    }

}

对于以下XML结构:

<square>
    <size>12</size>
</square>

它工作正常。

对于以下XML结构:

<square>
    <size>12</size>
    <width>12</width>
</square>

我已经在Stack Overflow上找到了解决方案。

XStream xstream = new XStream() {
            @Override
            protected MapperWrapper wrapMapper(MapperWrapper next) {
                return new MapperWrapper(next) {
                    @Override
                    public boolean shouldSerializeMember(Class definedIn,
                            String fieldName) {
                        if (definedIn == Object.class) {
                            return false;
                        }
                        return super
                                .shouldSerializeMember(definedIn, fieldName);
                    }
                };
            }
        };

但我的问题是我的web服务受到以下XML结构的影响:

<heading>
<square>
   <size>12</size>
   <width>12</width>
</square>

现在我的问题是它抛出了CannotResolveClassException,我正在捕获并尝试继续执行但它到达EOFException,即它将它视为完全解析完成。如何让XStream忽略Alias之外的标签,就像有人编写一段智能代码来忽略已识别别名中的未知元素一样。

0 个答案:

没有答案