У меня проблема с десериализацией с помощью XStream (от XML до объекта java).Deserialization with XStream - ArrayList stay null
десериализации работает хорошо, для повторяемых элементов (которые должны превратиться в список), за исключением ...
Мой XML:
<DATA>
<ANNUAIRES>
<REC_ANNUAIRE>
<NOPERS>1815985</NOPERS>
<NOM>Dubois A. (Evilard)</NOM>
<LIGNEADR1>DUBOIS A.</LIGNEADR1>
</REC_ANNUAIRE>
<REC_ANNUAIRE>
<NOPERS>0229984</NOPERS>
<NOM>Dubois Abel (La Chaux-de-Fonds)</NOM>
<LIGNEADR1>DUBOIS ABEL</LIGNEADR1>
</REC_ANNUAIRE>
<REC_ANNUAIRE>
<NOPERS>0013717</NOPERS>
<NOM>Dubois Achim (Corpataux-Magnedens)</NOM>
<LIGNEADR1>DUBOIS ACHIM</LIGNEADR1>
</REC_ANNUAIRE>
<REC_ANNUAIRE>
<NOPERS>1602681</NOPERS>
<NOM>Dubois Adrienne (Orvin)</NOM>
<LIGNEADR1>DUBOIS ADRIENNE</LIGNEADR1>
</REC_ANNUAIRE>
<REC_ANNUAIRE>
<NOPERS>0384177</NOPERS>
<NOM>Dubois Agnes (Thun 7)</NOM>
<LIGNEADR1>DUBOIS AGNES</LIGNEADR1>
</REC_ANNUAIRE>
<REC_ANNUAIRE>
<NOPERS>1424276</NOPERS>
<NOM>Dubois Agnes (Bussigny-Lausanne)</NOM>
<LIGNEADR1>DUBOIS AGNES</LIGNEADR1>
</REC_ANNUAIRE>
<NBREC EOF="False">50</NBREC>
<DUREE_EXECSQL>0</DUREE_EXECSQL>
<DUREE_BUILDXML>0</DUREE_BUILDXML>
</ANNUAIRES>
</DATA>
Мой XStream Код:
XStream xs = new XStream();
xs.alias("DATA", PojoPersonne.class);
xs.alias("REC_ANNUAIRE", Personne.class);
xs.aliasField("ANNUAIRES", PojoPersonne.class, "annuaire");
xs.aliasField("NOPERS", Personne.class, "idPersonne");
xs.aliasField("NOM", Personne.class, "identite");
xs.aliasField("STATUS", PojoPersonne.class, "status");
xs.addImplicitCollection(PojoPersonne.class, "listePersonne");
PojoPersonne pojo = (PojoPersonne)xs.fromXML(xml);
System.out.println(pojo);
pojo.afficheListe();
Мой класс PojoPersonne:
public class PojoPersonne {
private String annuaire;
private List<Personne> listePersonne = new ArrayList<>();
private String status;
public PojoPersonne(String annuaire, ArrayList<Personne> listePersonne, String status){
this.annuaire = annuaire;
this.listePersonne = listePersonne;
this.status = status;
}
public PojoPersonne(){
this.listePersonne = new ArrayList<>();
}
}
Так что проблема с listePersonne ArrayList ... это всегда нуль (или пусто, если я использую XStream xs = new XStream(new PureJavaReflectionProvider());
)
Спасибо за вашу помощь
Спасибо, но я не могу обойтись без '', если я пытаюсь игнорировать корневой элемент, у меня есть Exception ('CannotResolveClassException: DATA'). Но с вашей помощью это намного лучше ... Почти. У меня другая проблема. Когда я пытаюсь восстановить результат (ListePersonne pojo = ('ListePersonne) xs.fromXML (xml);'), приведение не работает ('vaudoiseLib.pojo.personne.ListePersonne не может быть перенесено в vaudoiseLib.model.personne. Personne'). Я думаю, что это возможно из-за моего XML (' ... '), но я не знаю, как я могу это решить ... –
user2472508
P.S. Я просто попробую слишком удалить корневой элемент DATA «вручную» из XML (поэтому я использую ANNUAIRES, как root), и все работает хорошо ... Но я не могу редактировать XML, поэтому я должен делать с этим .. :(У меня есть идея ... – user2472508
Просто выполните другой класс Data.class. У этого класса есть какой-то экземпляр аннуитов. Я покажу вам рабочий пример, когда вернусь в офис. – TFT