0
XStream (XML에서 Java 객체로)을 사용하여 직렬화에 문제가 있습니다. 역 직렬화가 (목록으로 설정해야합니다)에 반복 요소를 제외하고 잘 작동XStream으로 직렬화 복원 - ArrayList가 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();
My 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<>();
}
}
,363,210
그래서 문제는 당신은 ArrayList를 사용하기위한 클래스를 만들 필요가 당신의 도움이
감사에서 설명되어야한다,하지만 난 루트 요소를 무시하려고하면, 나는 예외 ('CannotResolveClassException : DATA')가, ''없이 할 수 없습니다. 그러나 당신의 도움으로 훨씬 나아졌습니다. 거의. 나는 지금 또 다른 문제가있다. 결과 (ListePersonne pojo = ('ListePersonne) xs.fromXML (xml);')를 복구하려고하면 캐스트가 작동하지 않습니다 ('vaudoiseLib.pojo.personne.ListePersonne은 vaudoiseLib.model.personne에 캐스트 할 수 없습니다. 인물). 내 XML ( ... ) 때문에 아마도 그런 것 같지만 어떻게 해결할 수 있는지 모르겠다. –
user2472508
P. XML에서 "수동으로"데이터 루트 요소를 너무 삭제 해보십시오 (루트와 같은 ANNUAIRES를 사용합니다). 모든 것이 잘 작동합니다 ... 그러나 XML을 편집 할 수 없으므로이 작업과 관련이 있습니다. 어떤 생각이든 ... – user2472508
다른 클래스 Data.class를 작성하십시오.이 클래스는 무엇입니까? 연금 인스턴스입니다. 사무실에있을 때의 실례를 보여 드리겠습니다. – TFT