Bonjour,

Dans mon projet java, je rencontre un problème lors d'utilisation de la fonction unmrshal sur un fichier XML afin de recevoir une liste d'objets.

La fonction unmarshal fonctionne parfaitement mais lorqu'on ajoute un nouveau contenu à ce même fichier en cliquant sur le bouton (add) et qu'on veut appliquer une autre fois la fonction unmarshal, je remarque que la liste retournée reste la même (comme si on n'a rien ajouté au fichier). Et pourtant, en vérifiant sur le fichier xml physique (présent sur le disque), je remarque que le nouveau contenu est bien présent.

La seule solution pour récupérer cette nouvelle liste est de fermer et de réouvrir l'appli (chose qui n'est pas pratique)

Voici une partie du code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//classe1.java 
 
Referentiel ref = null; 
File iniFile = new File(proprietesPerle.getRepReferentiel() + "referential.xml"); 
 
 
FileInputStream fs = null; 
try 
{	
 
fs = new FileInputStream(iniFile);	
 
} 
 
catch(FileNotFoundException fex) 
{ 
  ....
} 
 
try 
{ 
ref = Referentiel.unmarshal(fs);	
 
session.setAttribute("ref",(Object) ref); 
 
TreeMap map = ReferentielUtil.getApplication( ref ); 
 
session.setAttribute("mapAppli", map); 
} 
catch (UnmarshalException ex) 
{ 
logger.error(ex.getMessage()); 
} 
finally { 
 
try { 
 
fs.close(); 
 
} catch (IOException e) { 
logger.error(e.getMessage());	
} 
 
} 
 
...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//classe2.java 
 
TreeMap map = new TreeMap(); 
 
List listPL = app.getPl(); //this list is unmarshalled from the xml file 
 
ListIterator itpl = listPL.listIterator(); 
 
while (itpl.hasNext()) 
{ 
 
Pl pl = (Pl)itpl.next(); 
 
map.put(pl.getCode(), pl); 
} 
 
return map; 
 
...

SVP est ce que vous avez une solution à ce problème?

Merci d'avance.