Xstream (Java) неправильно десериализует строку XML в объект

У меня есть следующая строка XML, и я пытаюсь десериализовать ее в объект, но окончательный результат не является правильным.

Строка XML:
<Header><Sequence value=\"bbb-mySeq\"/><Session value=\"aaa-myValue\"/></Header>";

Объект, который я пытаюсь десериализовать:

public class Header implements Serializable {

private static final long serialVersionUID = 1L;

private List<Session> sessions = new ArrayList<Session>();
private List<Sequence> sequences = new ArrayList<Sequence>();

public List<Session> getSession() {
    return sessions;
}

public void setSession(Session session) {
    this.sessions.add(session);
}

public List<Sequence> getSequence() {
    return sequences;
}

public void setSequence(Sequence sequence) {
    this.sequences.add(sequence);
    }

}

Объект Sequence:

public class Sequence implements Serializable {

private static final long serialVersionUID = 1L;
private String value;

public String getValue() {
    return value;
}

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

}

Код десериализации:

    XStream xstream = new XStream();

    xstream.alias("Header", Header.class);
    xstream.alias("Session", Session.class);
    xstream.alias("Sequence", Sequence.class);

    xstream.addImplicitCollection(Header.class, "sessions");
    xstream.addImplicitCollection(Header.class, "sequences");

    xstream.useAttributeFor(Session.class, "value");
    xstream.useAttributeFor(Sequence.class, "value");
    System.out.println("msg: " + msg);

    Header result = (Header) xstream.fromXML(msg);

Когда я делаю toString() На полученном объекте я вижу:

Header [sessions=null, sequences=[Sequence [value=bbb-mySeq], Session [value=aaa-myValue]]]

Как видите, в последовательностях не должно быть сессий. Заранее благодарю за любую помощь.

1 ответ

Измените ваш вызов на addImplicitCollection:

xstream.addImplicitCollection(Header.class, "sessions", Session.class);
xstream.addImplicitCollection(Header.class, "sequences", Sequence.class);

Боаз

Другие вопросы по тегам