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);
Боаз